我无法为每个面使用不同纹理的立方体纹理。我可以在所有面上用一种纹理绘制立方体,但是当我尝试使用多个纹理时它会失败。我尝试这样做的方式是这样的:
//my indexing array located in a header file
#define NUM_IMAGE_OBJECT_INDEX 36
static const unsigned short cubeIndices[NUM_IMAGE_OBJECT_INDEX] =
{
    0, 1, 2,   2, 3, 0,      // front
    4, 5, 6,   6, 7, 4,      // right
    8, 9,10,  10,11, 8,      // top
    12,13,14,  14,15,12,     // left
    16,17,18,  18,19,16,     // bottom
    20,21,22,  22,23,20      // back
};
现在在我的渲染功能中,这目前适用于使用单个纹理绘制立方体
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, iconTextureID);
glDrawElements(GL_TRIANGLES, NUM_IMAGE_OBJECT_INDEX, GL_UNSIGNED_SHORT, 0);
这不起作用
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, iconTextureID);
glDrawElements(GL_TRIANGLES, NUM_IMAGE_OBJECT_INDEX, GL_UNSIGNED_SHORT, (const GLvoid*)&cubeIndices[0]);
从查看其他示例来看,这应该等同于同一件事。最终我想做这样的事情:
for(int i = 0; i < 6; i++){
    iconTextureID = textureID[i];                
    glBindTexture(GL_TEXTURE_2D, iconTextureID);
    glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, (const GLvoid*)&cubeIndices[i*6]); //index 0-5 use texture 1, 6-11 use texture 2, etc
}
有谁知道这个索引有什么问题?我基本上从一个android项目(有效)中复制粘贴了这段代码,目前正在尝试在ios上执行此操作。