2

我有代码:

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);

知道我可能会错过什么吗?

4

0 回答 0