4

私はOpenGLアプリケーションでhudを作成しようとしています。周りを見回すと、正投影を使用する方法のようですが、これまでのところ、プログラムを正しくレンダリングすることができませんでした。何が起こっているのかは、ディスプレイの上にレンダリングする代わりに、ここに見られるような奇妙なグラフィックの不具合が発生しています。

ここに画像の説明を入力してください

hudコードをコメントアウトすると、すべてが完全にレンダリングされます。

glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);

//Set up projection matrix
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//Using gluPerspective. It's pretty easy and looks nice.
gluPerspective(fov, aspect, zNear, zFar);

//Set up modelview matrix
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

//3D rendering

glDepthMask(GL_FALSE);
glDisable(GL_DEPTH_TEST);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,window_width,0,window_height); //left,right,bottom,top

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glColor3f(0.0,0.0,1.0);
glBegin(GL_QUADS);
    glVertex2f(50,50);
    glVertex2f(50,100);
    glVertex2f(100,100);
    glVertex2f(100,50);
glEnd();
4

2 に答える 2

4

HUDのレンダリングが完了したら、深度書き込みを再度有効にする必要があります

glDepthMask(GL_TRUE);
于 2011-12-03T20:29:51.370 に答える
2

HUDをレンダリングするときにバッファをクリアすると、これまでに描画されたもの(3Dシーン)もすべてクリアされます。したがって、バッファを2回クリアしないでください。

于 2011-12-03T20:02:49.683 に答える