2011-12-03 9 views
4

OpenGLアプリケーションでhudを作成しようとしています。見て回ってみると、それはオルトの投影法であるように見えますが、これまでのところ私はプログラムを正しくレンダリングすることができませんでした。私はHUDコードをコメントアウトした場合、すべてが完璧にレンダリング3DアプリケーションでのOpenGL 2D hud

enter image description here

:ここに見られるように何が起こっていることの代わりに私のディスプレイの上にレンダリングするのですが、私は奇妙なグラフィカルグリッチを取得しています。

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

、私はHUDセクションににglClearをコメントアウト

glDepthMask(GL_TRUE); 
+0

クワッドは実際に画面のどこにもレンダリングされませんが、それはそうしました。 – Katherine1

2

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

+0

深さは書い再度有効にする必要があり、それはプログラムに何の視覚効果がなかったです。 – Katherine1

+0

アルファブレンディングを有効にし、クワッドを透明に描画して確認してください。あなたのクアッドがウインドウサイズに比べて大きすぎるかもしれないようです。私は疑問に思います - そして、なぜそれが青ではないのか分かりません。赤い三角形がどこから来たのか。ハドを描く前にビットを後方に動かしてみてください(0,0、-1などを変換してください)。 –

+0

私が移動すると、私は黒を持っています。迷路の初期の見え方に合ったものはわかりません(開始時に私が見ているホールの構成に合わせて形が変わります)私が見ることができる奇妙なやり方。 – Katherine1