Opengl 2D HUD中的纹理错误

Opengl 2D HUD中的纹理错误,opengl,hud,Opengl,Hud,我正在尝试将HUD应用到我的3d应用程序中,我得到的是在某个位置有一个矩形,上面有纹理。问题是,每当我旋转或移动相机时,纹理会随着相机缩放或移动,看起来非常奇怪。你知道为什么会这样吗 这是我添加HUD的步骤: glDisable(GL_DEPTH_TEST); glClear(GL_DEPTH_BUFFER_BIT); glMatrixMode( GL_PROJECTION ); glPushMatrix(); glLoadIdentity(); gluOrtho2D( 0, 1, 0, 1

我正在尝试将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 );

您的代码缺少另一个调用,glMatrixModeGL_MODELVIEW;在您第二次调用glPopMatrix之后


也许这在您的代码中较低,但从您对发生的事情的描述来看,这听起来确实像是矩阵的问题。

您是在尝试以2D还是3D绘制HUD?你能发布你描述的问题的屏幕截图吗?你是用正交投影绘制的吗,并使用像素值?我使用的是第三方代码,我只是想以某种方式添加Hud。我正在使用他们提供的其中一种纹理,它是代码中的第4个,我应该朝那个方向看吗?