当我有多个纹理四边形使用相同的纹理但在不同的坐标时,纹理变形。这是我的代码的样子:
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();
有人知道导致这种情况的原因以及解决方法吗?
答案 0 :(得分:1)
你以错误的顺序调用glTexCoord和glVertex。 glVertex应始终是调用以完成顶点的最后一个属性。
应该是:
glBegin(GL_QUADS);
glTexCoords2f(0, 0); glVertex2f(0, 0);
...