OpenGL glTexCoordPointer似乎没有应用纹理

时间:2012-11-08 21:31:10

标签: opengl textures vbo vertex-buffer

我有代码:

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

我很困惑为什么四边形画得很好,但纹理根本没有被映射。

将部分展开到glTexCoord2fglVertex3f的调用非常有效,所以我只能假设我的纹理绑定有问题。

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

时设置的默认值

知道我可能缺少什么吗?

0 个答案:

没有答案