OpenGL不正确的纹理坐标只有多个纹理四边形

时间:2012-09-22 23:44:23

标签: c opengl textures quad

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

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

有人知道导致这种情况的原因以及解决方法吗?

1 个答案:

答案 0 :(得分:1)

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

应该是:

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