ポイントは次のとおりです。プログラムをリンクする前に 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 を呼び出す必要はありません。