0

我一直在尝试让 HUD 纹理为模拟器显示一段时间,但没有成功。

首先我像这样绑定纹理:

glGenTextures(1,&hudTexObj);
gHud = getPPM("textures/purplenebula/hud.ppm",&n,&m,&s);
glBindTexture(GL_TEXTURE_2D,hudTexObj);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); 
//glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,n,m,0,GL_RGB,GL_UNSIGNED_INT, gHud);

然后我尝试将它映射到一个 QUAD,这导致整个四边形为单一棕色,我希望它使用所有的纹素。这是我的映射方式:

    glBindTexture(GL_TEXTURE_2D,hudTexObj);

glBegin(GL_QUADS);
glTexCoord2f(0.0,0.0);
glVertex2f(0,0);

glTexCoord2f(0.0,1.0);
glVertex2f(0,m);

glTexCoord2f(1.0,1.0);
glVertex2f(n,m);

glTexCoord2f(1.0,0.0);
glVertex2f(n,0);
glEnd();

奇怪的是,我已经能够获得上面的代码来在它自己的程序中显示纹理,但是当我把它放到我的主程序中时它失败了。它可能与纹理矩阵有关吗?此时我傻眼了。

4

1 回答 1

1

愚蠢的是,我在代码的另一部分启用了自动 tex 坐标生成。因此,如果您看到一个纹素的颜色覆盖了整个图像,这可能是原因。

于 2009-05-07T20:51:53.173 回答