我正在尝试将HUD应用到我的3d应用程序中,我所取得的是我在某个位置有一个矩形,其上有纹理。问题是每当我旋转或移动相机,纹理缩放或移动相机时,看起来都很奇怪。任何想法为什么会发生?
这就是我要添加HUD的方法:
glDisable(GL_DEPTH_TEST);
glClear(GL_DEPTH_BUFFER_BIT);
glMatrixMode( GL_PROJECTION );
glPushMatrix();
glLoadIdentity();
gluOrtho2D( 0, 1, 0, 1);
glMatrixMode( GL_MODELVIEW );
glPushMatrix();
glLoadIdentity();
glEnable (GL_TEXTURE_2D);
glBindTexture (GL_TEXTURE_2D,4 );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glBegin( GL_QUADS );
glColor3f( 1.0f, 1.0f, 0.0f );
glTexCoord2f(0,0);
glVertex2f( 0.0f, 0.0f );
glTexCoord2f(1,0);
glVertex2f( 0.4f, 0.0f );
glTexCoord2f(1,1);
glVertex2f( 0.4f, 0.4f );
glTexCoord2f(0,1);
glVertex2f( 0.0f,0.4f );
glEnd();
glPopMatrix();
glMatrixMode( GL_PROJECTION );
glPopMatrix();
glEnable(GL_DEPTH_TEST);
glEnable( GL_LIGHTING );
答案 0 :(得分:0)
你的代码缺少另一个调用,glMatrixMode(GL_MODELVIEW);在你第二次调用glPopMatrix()之后。
也许这在您的代码中较低,但根据您对正在发生的事情的描述,它听起来像是矩阵的问题。