我剛剛通過關於頂點數組對象和頂點緩衝對象教程看完了,我不能從下面的代碼的OpenGL如何知道第一VBO(vertexBufferObjID[0]
)表示頂點座標,第二VBO鍛鍊(vertexBufferObjID[1]
)代表色彩數據?OpenGL如何知道每個頂點緩衝對象是什麼類型?
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);
編輯:由於彼得的答案,我發現的代碼鉤向上以下兩行各VBO與着色器(索引0 & 1關聯到VBO指數):
glBindAttribLocation(programId, 0, "in_Position");
glBindAttribLocation(programId, 1, "in_Color");
你好,你會好好分享你提到的教程嗎? – dxb
我不記得了我的頭頂,但我想我用Google搜索類似「的OpenGL 3教程」。 –