0

たとえば、次のコードがあります。

//Create a vbo and bind it to the GL_ARRAY_BUFFER
glGenBuffers(1, &positionBufferObject);    
glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);

//vertexPosition is an array of floats that stores the position of 3 vertices (x, y, z, w)
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexPositions), vertexPositions, GL_STATIC_DRAW);

//Enable the vbo at index 0 of the vao (assuming I have stored it previously at index 0)
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);

//Finally draw the triangle
glDrawArrays(GL_TRIANGLES, 0, 3);

私の質問は、glDrawArrays() は、GL_ARRAY_BUFFER にバインドされているものはすべて、たとえば色ではなく、位置に関する情報を参照していることをどのように知っているのでしょうか?

4

1 に答える 1

2

が利用可能な場合gl_Vertex(つまり、コア プロファイルではない場合)、仕様はその位置と頂点属性 0 エイリアスを呼び出します。

gl 4.5 互換性プロファイル仕様(401/1005 ページ)から:

汎用頂点属性をゼロに設定すると、セクション 10.7.2 で説明されているように、頂点が指定されます。その他の汎用頂点属性を設定すると、属性の現在の値が更新されます。頂点属性ゼロの現在の値はありません

于 2015-07-01T19:42:12.333 に答える