Vertex Array Objects と Vertex Buffer Objects に関するチュートリアルを読んだところですが、OpenGL が最初の VBO ( vertexBufferObjID[0]
) が頂点座標を表し、2 番目の VBO ( vertexBufferObjID[1]
) がカラー データを表していることを次のコードから理解できませんか?
glGenBuffers(2, vertexBufferObjID);
// VBO for vertex data
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObjID[0]);
glBufferData(GL_ARRAY_BUFFER, 9*sizeof(GLfloat), vertices, GL_STATIC_DRAW);
glVertexAttribPointer((GLuint)0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);
// VBO for colour data
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObjID[1]);
glBufferData(GL_ARRAY_BUFFER, 9*sizeof(GLfloat), colours, GL_STATIC_DRAW);
glVertexAttribPointer((GLuint)1, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(1);
編集: Peter の回答のおかげで、各 VBO をシェーダーに接続する次の 2 行のコードが見つかりました (インデックス 0 と 1 は VBO インデックスに関連付けられています)。
glBindAttribLocation(programId, 0, "in_Position");
glBindAttribLocation(programId, 1, "in_Color");