当我有多个纹理四边形使用相同的纹理,但坐标不同时,纹理就会变形。这是我的代码:

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


有人知道导致此问题的原因以及如何解决它吗?

最佳答案

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

应该:

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

09-25 17:26