2009-06-25 12 views
10

OpenGLを使用して一連の長方形を描画しようとしていますが、長方形の下に表示されるはずのものがその上に表示されます。私は、各抽選の初めにgluLookAtを使用していますOpenGLのデプスバッファ

glClearDepth(1.0f); 
glDepthFunc(GL_LESS); 
glEnable(GL_DEPTH_TEST); 

を使用しています深機能を有効にするには

。ここに問題のイメージがあります。青色の四角形は、緑色の四角形よりも高いy値で配置されます。

alt text alt text

あなたは緑色の四角形の一部が青色のものの上に表示され、トップ画像で見ることができるように。なぜこれが起こっているのか、私はそれを修正するために何ができるのでしょうか?私は長方形を描いている順序と関係がありますか?

答えて

12

カラーバッファをクリアすると、デプスバッファもクリアされますか?

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

あなたは画像が正しくないですか?それらの緑色の四角の一部は実際には青色のものよりも高く見えます。

7

使用しているどのウィンドウシステムでもデプスバッファを有効にしましたか?たとえば、glutを使用する場合、次のようにする必要があります。glutInitDisplayMode(GLUT_DEPTH | ....);

+0

私のウィンドウツールキットにqtを使用しています。私はそのような機能を知らない。私がglutの機能と同じように呼ぶべきものがあるかどうか知っていますか? – DHamrick

+2

'QGLFormat'オブジェクトでは、深度バッファが' depth'メソッドと 'setDepth'メソッドで有効になっているかどうかを確認できます。 – ravuya

+1

ありがとうございます。その答えは私の日を救った。 – hanno

関連する問題