1

3DアプリケーションにHUDを実装しようとしていますが、達成したのは、特定の位置に長方形があり、その上にテクスチャがあることです。問題は、カメラを回転または移動するたびに、テクスチャがスケールしたり、カメラと一緒に移動したりすると、非常に奇妙に見えることです。なぜそれが起こるのか、何か考えはありますか?

これは、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 );
4

1 に答える 1

0

あなたのコードには、glMatrixMode(GL_MODELVIEW); という別の呼び出しがありません。glPopMatrix() を 2 回目に呼び出した後。

おそらくこれはコードの下位にありますが、何が起こっているかについての説明から、マトリックスの問題のように聞こえます。

于 2012-04-21T16:20:13.437 に答える