2012-09-22 98 views
0

当我有多个纹理四边形使用相同的纹理,但在不同的坐标时纹理变形。以下是我的代码的样子:OpenGL不正确的纹理坐标只有多纹理四边形

glBindTexture(GL_TEXTURE_2D, texture_id); 
glBegin(GL_QUADS); 
    glVertex2f(0, 0); glTexCoords2f(0, 0); 
    glVertex2f(32, 0); glTexCoords2f(.5, 0); 
    glVertex2f(32, 32); glTexCoords2f(.5, .5); 
    glVertex2f(0, 32); glTexCoords2f(0, .5); 
glEnd(); 

glTranslatef(32, 0, 0); 

glBegin(GL_QUADS); 
    glVertex2f(0, 0); glTexCoords2f(.5, .5); 
    glVertex2f(32, 0); glTexCoords2f(1, .5); 
    glVertex2f(32, 32); glTexCoords2f(1, 1); 
    glVertex2f(0, 32); glTexCoords2f(.5, 1); 
glEnd(); 

有没有人知道是什么原因造成的以及如何修复它?

+3

“纹理得到蜕变” 是什么意思呢? –

回答

1

您按照错误的顺序调用glTexCoord和glVertex。 glVertex应该始终是调用来完成一个顶点的最后一个属性。

应该是:

glBegin(GL_QUADS); 
    glTexCoords2f(0, 0); glVertex2f(0, 0);  
    ... 
+0

谢谢。这总是最难找到的最简单的错误。 – user1691602