我有代码:
glBindTexture( GL_TEXTURE_2D, texture );
glBindBuffer(GL_ARRAY_BUFFER, triangleVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof( vertices ), vertices , GL_STATIC_DRAW);
glVertexPointer(3, GL_FLOAT, 0, NULL);
glEnableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, coordsVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof( texcoords ), texcoords , GL_STATIC_DRAW);
glTexCoordPointer(2, GL_FLOAT, 0, NULL);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glDrawArrays(GL_QUADS, 0, sizeof(vertices) / sizeof(float) / 3);
我很困惑为什么四边形绘制得非常好,但纹理根本没有被映射。
将部分展开到调用中glTexCoord2f
并且glVertex3f
效果很好,所以我只能假设我的纹理绑定有问题。
texcoords 正在初始化:
GLfloat texcoords[] = { 1.0, 0.0
, 1.0, 1.0
, 0.0, 1.0
, 0.0, 0.0
, 0.0, 0.0
, 0.0, 1.0
, 0.0, 1.0
, 0.0, 0.0
, 1.0, 0.0
, 1.0, 1.0
, 0.0, 1.0
, 0.0, 0.0
,1.0, 0.0
,1.0, 1.0
,1.0, 1.0
,1.0, 0.0
, 1.0, 1.0
, 1.0, 1.0
, 0.0, 1.0
, 0.0, 1.0
, 1.0, 0.0
, 1.0, 0.0
, 0.0, 0.0
, 0.0, 0.0 }
现在保持不变,它的对数与我的顶点数组具有顶点三元组的数量相同。
我得到 GL_NO_ERROR 并且面部都被着色为初始调用时设置的默认值glColor3f(0.9f, 0.1f, 1.0f);
知道我可能会错过什么吗?