重点是: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 。