5

デプスバッファがあり、画面に円錐をレンダリングしています。動作しますが、深度テストの標準的な有効化を忘れていたことに気付き、オンにすると何も表示されなくなりました。

私のシーンにはこの1つのオブジェクト、円錐しかありません。そのため、その前には他に何もありません。

デプスバッファは正常に設定されています。

glFramebufferRenderbuffer(GL_FRAMEBUFFER,
                              GL_DEPTH_ATTACHMENT,
                              GL_RENDERBUFFER,
                              m_depthRenderbuffer);

レンダーバッファをバインドします。

glBindRenderbuffer(GL_RENDERBUFFER, m_renderbuffer);

次に、円錐をレンダリングします。

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

(この厄介な円錐を使った私の実験は、まもなく尋ねる別の質問の主題です)。

ただし、デプスバッファを作成し、レンダーバッファをバインドした後、次の行を追加するとすぐに次のようになります。

glEnable(GL_DEPTH_TEST)

...その後、私の円錐は魔法のように消えます。画面には何も表示されておらず、小さな点もありません。

なぜそうなるのでしょうか?

4

2 に答える 2

7

GL_DEPTH_TESTを使用する場合、

デプスバッファが正しく初期化されるように、レンダリングする前にglClear(GL_DEPTH_BUFFER_BIT)を呼び出す必要があります。

于 2013-03-11T08:44:28.720 に答える
0

fuzzyTewがコメント(2017年4月26日)で取り上げたように、一部の人々は、ニアクリッピング距離が0に設定されているという問題を抱えている可能性があります。これを0.01 * cam_distanceに設定すると、すべてがダンディでした。

[...]私のニアクリッピング距離は0に設定されました。正である必要があることがわかりました。–fuzzyTew2017年4月26日20:25

于 2020-10-01T21:26:09.450 に答える