2

私はOpenGLを初めて使用し、NeHeのチュートリアルやその他のさまざまなWebソースを調べてきました。また、テキストをHUDとしてレンダリングするために、他のすべてのものよりもいくつかのことをテストしています。非常に長い夜を過ごした後、私はこれを機能させることができず、ここで機能する解決策を見つけることができないので、私は尋ねたいと思いました。

私のコード:

GLvoid glLoadHUD(GLvoid)
{
    glPushAttrib(GL_LIGHTING_BIT |
                    GL_DEPTH_BUFFER_BIT |
                    GL_TEXTURE_BIT);

    glDisable(GL_LIGHTING);
    glDisable(GL_DEPTH_TEST);
    glDisable(GL_TEXTURE_2D);

    glMatrixMode(GL_PROJECTION);
        glPushMatrix();
            glLoadIdentity();
            glOrtho(0.0f, 1.0f, 0.0f, 1.0f, -1.0f, 1.0f);
            glRasterPos2f(0.1f, 0.6f);
            glColor3f(1.0f,1.0f,1.0f);
            glPrint("Test.");
            glRasterPos2f(0.0f, 0.0f);
        glPopMatrix();
    glMatrixMode(GL_MODELVIEW);
    glPopAttrib();

    glEnable(GL_TEXTURE_2D);
    glEnable(GL_LIGHTING);  
    glEnable(GL_DEPTH_TEST);
}    

これはテキストをレンダリングするためのコードであり、これはシーンを描画するためのコードです。

int DrawGLScene(GLvoid)                                         
{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clears buffers
glLoadIdentity();

// If I put glLoadHUD(); here, it renders but the models render over it,
    //  which is useless.

for (xloop = 0; xloop < 3;)
{
    glLoadIdentity();
    glTranslatef(-4.0f+(float(xloop)*4.0f),0.0f,-12.0f);
    glCallList(dlstBox);    // This is the call to create a box.
    xloop++;
}


glLoadHUD();  // If I put it here though, it doesn't render at all.

return TRUE;
}

よろしくお願いします。私はかなり緑で、顔を真正面から見つめていると思いますが、これは私を怒らせており、それを機能させる方法がわかりません。

4

2 に答える 2

2

glLoadHudシーンの残りの部分の後、マトリックスMODELVIEWはまだスタック上にあり、の一部としてクリアしませんglLoadHud。したがってglTranslatef、シーン中に蓄積されたすべての変換は、ハッドを描画しているときにまだアクティブであり、表示可能なウィンドウのすぐ外に変換されます。

MODELVIEWの開始の一部としてマトリックスをクリアし、glLoadHudそれが違いを生むかどうかを確認します。

于 2012-07-10T05:41:23.690 に答える
0

Zクリッピング内で印刷されている可能性があるため、画面に表示されません。したがって、画面の外に少し移動して、表示されるかどうかを確認します。

于 2012-07-10T03:58:20.253 に答える