【发布时间】:2012-12-28 07:18:08
【问题描述】:
因为 openGL 的纹理映射,我快要发疯了。它永远不会映射正确的东西,请看一下。
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, speed.texID);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
glBegin(GL_QUADS);
glTexCoord2f(1,0);
glVertex2f(210, 638); //Top-Left
glTexCoord2f(1,1);
glVertex2f(210, 438); //Top-Right
glTexCoord2f(0,1);
glVertex2f(10, 438); //Bottom-Right
glTexCoord2f(0,0);
glVertex2f(10, 638); //Bottom-Left
glEnd();
glDisable(GL_TEXTURE_2D);
这段代码输出后的图片变成了这样:
但我希望它是这样的:
当我将纹理更改为其他内容时,它会正确映射它,但显然不是这个。你认为为什么会这样?
【问题讨论】:
-
好吧,如果此代码适用于其他纹理(即
glBindTexture的其他参数),也许值得研究一下如何创建此特定纹理。 -
首先,(210, 638) 在笛卡尔坐标中是 Top-Right。
-
如果其他纹理有效,则该纹理的大小或格式可能是奇怪的,并且在加载时没有观察到一些必要的填充。
-
@JasonD 更重要的是,纹理是 199x200。我高度怀疑读取纹理的代码中存在错误。
-
感谢 JasonD,这确实是奇怪的大小问题。我不敢相信我花了几个小时来解决这个问题。