2011/03/29

libgdx 0.9 GLSL 與 VertexAttribute alias

libgdx 的Mesh可以呼叫getVertexAttribute(int usage) 以取得各個VertexAttribute
有以下幾種
  • Color 
  • ColorPacked 
  • Generic 
  • Normal 
  • Position 
  • TextureCoordinates 
感覺比較重要的是 Normal , Position , TextureCoordinates這幾個

取得VertexAttribute可以為其取一個alias以便在GLSL使用

以下是官方範例
  • 設定alias
          obj.getVertexAttribute(Usage.Position).alias = "a_position";
  • Vertex Shader(去除多餘資訊)
            uniform mat4 u_mvpMatrix;                
            attribute vec4 a_position;                 
            void main()                              
            {                                          
               gl_Position = u_mvpMatrix * a_position  
            }                            

不過為何不用橘皮書常用的
gl_Position = ftransform();
可能時機不對?
補:
gl_Position = ftransform();
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_Position = gl_ProjectionMatrix*gl_ModelViewMatrix*gl_Vertex;
這三句同效用
因為那個官方範例是沒有設定Projection Matrix 與Modelview Matrix(用Matrix4記錄)
故不用之



沒有留言 :