0

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

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

有谁知道这是什么原因以及如何解决它?

4

1 回答 1

1

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

应该:

glBegin(GL_QUADS);
    glTexCoords2f(0, 0);    glVertex2f(0, 0);    
    ...
于 2012-09-23T01:08:10.637 回答