当我有多个纹理四边形使用相同的纹理,但坐标不同时,纹理就会变形。这是我的代码:
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);
...