問題是:在鏈接程序之前必須調用glBindAttribLocation。
glBindAttribLocation(program, ATTRIBUTE_POSITION, "position");
glBindAttribLocation(program, ATTRIBUTE_TEXTURE_COORDINATES, "textureCoordinates");
glLinkProgram(program);
然後你可以使用屬性陣列功能與固定指標,如:
glEnableVertexAttribArray(ATTRIBUTE_POSITION);
glEnableVertexAttribArray(ATTRIBUTE_TEXTURE_COORDINATES);
glVertexAttribPointer(ATTRIBUTE_POSITION, 2, GL_FLOAT, GL_FALSE, _positionStride, (void*)0);
glVertexAttribPointer(ATTRIBUTE_TEXTURE_COORDINATES, 2, GL_FLOAT, GL_FALSE, _positionStride, (void*)_textureCoordinatesOffset);
如果指數只是簡單的整數,如:
//Vertex attributes.
enum
{
ATTRIBUTE_POSITION, //0
ATTRIBUTE_TEXTURE_COORDINATES //1
};
它現在。所以我不必在每次繪製調用之前調用glVertexAttribPointer。
-1:「有人可以給我看一個簡短的示例代碼,告訴我上述函數的正確使用/執行順序嗎?」這是一個可怕的問題。如果你不知道他們*做了什麼*,你不知道這些功能進入的順序的唯一方法。所以你需要問這些功能如何工作*;否則,你只是複製和粘貼編碼。 – 2012-04-21 10:02:58
@Nicol:像這樣的東西 - http://www.opengl.org/sdk/docs/man/xhtml/glBindAttribLocation.xml - 確實不錯,但告訴我關於執行順序的事情沒什麼。 – Geri 2012-04-21 10:50:31
我真的知道glBindAttribLocation是做什麼的,但是當它連接我的程序後不能正常工作時,我不知道要去哪裏。 – Geri 2012-04-21 10:51:25