4

OpenGL 3.0+ に関するチュートリアルでは、頂点配列オブジェクトと頂点バッファー オブジェクトを次のように作成します。

GLuint VAO, VBO; 
glGenVertexArrays(1, &VAO);
glGenBuffers(1, &VBO);
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);

ここで、VAO はunsigned int( GLuint) であり、そのアドレスを関数 でそれに渡しますglGenVertexArray。ただし、ドキュメントによると、関数の 2 番目の引数は( ) の配列に する必要があります。VBO と. 上記のコードがそのような引数で機能する理由がわかりません。unsigned intGLuint*glGenBuffers

上記のコードをこれに置き換えようとしました(そして、コードの他の場所で必要な変更を行います):

GLuint VAO[1];
GLuint VBO[1];
glGenVertexArrays(1, VAO);
glGenBuffers(1, VBO);
glBindVertexArray(VAO[1]);
glBindBuffer(GL_ARRAY_BUFFER, VBO[1]);

コンパイルして実行しますが、予期しない動作が発生します。テクスチャ付きの四角形は最初の構文でレンダリングされますが、2 番目の構文ではレンダリングされません。なぜこれが起こるのか理解できません。

編集:ありがとう。前述のとおり、2 番目のコードにはインデックス付けの誤りがあります。

4

3 に答える 3