C OpenGL tex映射:整个对象是单个texel';s颜色

C OpenGL tex映射:整个对象是单个texel';s颜色,c,opengl,texture-mapping,C,Opengl,Texture Mapping,我一直在尝试让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); glTex

我一直在尝试让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);
然后我尝试将它映射到一个四边形,结果整个四边形是一个单一的棕色,我希望它使用所有的纹理。以下是我的地图:

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

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

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