2012-04-06 23 views
15

OpenGLでは、私は単純なモデルを表示します。深さバッファを有効にすると、すべてが消えます。glEnable(GL_DEPTH_TEST) - 何も表示されない

glEnable(GL_CULL_FACE); 
glEnable(GL_DEPTH_TEST); 
glDepthMask(GL_TRUE); 

私はthis OpenGL FAQを読んだが、それは私を助けなかった。

私のパースペクティブ設定は、angle = 45deg、near = 1 far = 40、モデルを(0,0,0)に置き、私は(0,0,4)に目を置きます。 zバッファなしI モデルを参照

何が問題なのですか?

+3

多分、あなたのモデルを間違った側にレンダリングしますか? GL_CULL_FACEを無効にしてみてください。これは何が間違っているかを言うのに十分なコードではありません。 –

+0

いいえ、助けていない。あなたは「間違った面」をどういう意味ですか?法線は反対の方向にあるのでしょうか?私はファイルから標準モデルを読み込みます。私はレンダリングの特定の順序を保証していませんが、これはzバッファージョブですよね? –

+3

@JakubM .:法線は間引きに影響しません。フェースカリングは、頂点が入ってくるスクリーン上の方向に依存します。完全に設定可能で、デフォルトはbueです。頂点が画面上で時計回りの順序で描かれます。 – datenwolf

答えて

42

デプスバッファをクリアしたことを確認しましたか?他の答えは動作しない場合

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
           ^^^^^^^^^^^^^^^^^^^ 
+2

ビンゴ!イースター、おめでとう! –

+0

ありがとう、これは私のためにも働いた。私はレンダーコードでそれを持っていた、ちょうどリサイズ中ではありません。 – Mmarss

+0

そして、上記の#defineを次のように混ぜて間違えてはいけません:GL_DEPTH_BITS ...これはうまくいかず、非常に不都合な非レンダリングを残します! – electromaggot

6

user886079comment

で述べたものを試してみてください以上が動作しない場合は、gluPerspectiveで、glFrustum、またはglOrtho機能で、あなたの近くに飛行機をご確認ください。デプスバッファリングが0に設定されていると動作しないようです。

私はほとんどすべてを試しましたが、重複する問題は解決できませんでした。私は0.0fに近い値を入れました。私はそれを0.01fに変更しました。結果は今必要なものです。

0

上記の次の答えは、次のことをしようと動作しない場合:

  • あなたはGL_CULL_FACEは、モデルの頂点の順番を確認してください有効にしている場合。 (LH)(RH)
  • GL_DEPTH_TESTが有効な場合。カメラの位置&の視線方向とともに、モデルビュー投影行列に対して錐台の面をチェックします。
  • GL_BLENDが有効な場合。オブジェクトのレンダリング順序をz-bufferと比較して確認してください。
関連する問題