2011-06-29 20 views
0

私は、ubuntu 10.10でOpenGL-es 2.0の作業をpvrsdkで行っています。 私のコードでは、レンダリングするには三角形の頂点を取っていますが、頂点シェーダで属性パラメータを使用する必要があるときです。どのように変化するのですか頂点シェーダの属性パラメータ

私は、例ではmyVertexを使用しています。それはどういう意味ですか?

const char* pszVertShader = "\ 
    attribute highp vec4 myVertex;\ 
    uniform mediump mat4 projmatrix;\ 
    invariant gl_Position;\ 
    void main(void)\ 
    {\ 
     gl_Position = projmatrix * myVertex;\ 
    }"; 


===============================render====================== 
glBindAttribLocation(uiProgramObject, VERTEX_ARRAY, "myVertex"); 

ので、私はちょうどたい、それがmyVertex属性に影響を与えるだろう、私はテキストファイルから頂点を取っていることを知っている:このような

あなたは別の情報が必要な場合は、「通常、私はあなたを提供することができますし、私はすでにOpenGLは3/OpenGLの-ES 2は、事前に定義された頂点の概念は属性「位置」を放棄しているhere

+0

何の呼び出しでその変数を使用するか、変数shader.attrib.vertexを使用することができます(グローバル)定数VERTEX_ARRAY 'VERTEX_ARRAY'ですか? –

+0

私の全体のコードがリンクにありますあなたは見ることができます:それはバインドされる一般的な頂点属性のインデックスを指定します。そのインデックス。 –

答えて

2

前の質問に私の全体のコードを掲載しています」、 "TEXCOORD"、...、glVertexPointer、glNormalPointer、glTexCoordPointer、を通じて供給されている...

代わりにあなたのシェーダでは、カスタムvaryings/in属性識別子をご紹介します。それらの識別子は、いわゆる属性位置(数値インデックス)によって参照されます。 glBindAttribLocationでは、属性識別子を特定の場所に割り当てることができます。上記のコードフラグメントの場合、プログラムコード(!)によって導入された、すなわちOpenGLまたはそのようなものによって事前に定義されていないグローバル定数VERTEX_ARRAYが存在するようであり、シェーダのmyVertex可変/ in属性に広く使用されています。だから、特定の頂点属性は、次のような声明の中で、共通のトークンVERTEX_ARRAYを通じてglVertexAttribPointerすることで、データを供給することができる

:もちろん

glVertexAttribPointer(VERTEX_ARRAY, 3, GL_FLOAT, false, 0, isVBO ? (char*)vertex.offset : (char*)vertex.data + vertex.offset); 

がglVertexAttribPointerの正確な意味を呼び出すには、特定のプログラムに依存していますそれらを行います。

の代わりにあなたが同様にあなたが

shader.attrib.vertex = glGetAttribLocation(shader.program_object, "myVertex"); 

を使用して、シェーダごとに設定し、glVertexAttribPointer

glVertexAttribPointer(shader.attrib.vertex, …) 
関連する問題