【问题标题】:OpenGL incorrect texture coords only with multiple textured quadsOpenGL 不正确的纹理坐标仅具有多个纹理四边形
【发布时间】:2019-11-12 23:29:28
【问题描述】:

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

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

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

【问题讨论】:

  • “纹理变形”是什么意思?

标签: c opengl textures


【解决方案1】:

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

应该是:

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

【讨论】:

  • 谢谢。最难发现的总是最简单的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多