问题是:在链接程序之前必须调用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