5

私はOpenGLが初めてです。JOGLで使っています。

私はフラスタムカリングについて読んでいます:

http://www.lighthouse3d.com/opengl/viewfrustum/

http://www.crownandcutlass.com/features/technicaldetails/frustum.html

私はそれが何をすべきか正確にはわかりません。OpenGL は画面外のオブジェクトを自動的にカリングしませんか? (このカリングは、最初からオブジェクトを送信しない場合よりも大幅に遅くなりますか?)

私が読んでいることから、これは、別の背後に隠れているが視錐台内にあるオブジェクトの描画を回避するようには見えません。それは、画面外のオブジェクトを OpenGL に送信しないことが唯一の利点であるということですか?

4

4 に答える 4

4

はい、あなたは基本的に正しいです。錐台カリングは、カメラピラミッドの外側にあるオブジェクトを切り取ります。OpenGLは、シーンをレンダリングするときに、もちろんこれも行いますが、頂点ごとに行います。錐台カリングはオブジェクトごとに機能するため、パフォーマンスを向上させる可能性ははるかに高くなります。
ボトルネックの1つは、CPUとGPUの間でデータを転送することです。たとえば、屋外シーンですべてのオブジェクト/頂点の1/4だけを転送する必要がある場合、錐台カリングはパフォーマンスを大幅に向上させることができます。

于 2010-09-27T20:59:56.773 に答える
3

最速のオブジェクトは、まったく描画する必要がないオブジェクトです。

一般に、まだ完全に単純ではないオブジェクトの場合、単純化された保守的なバウンディングボリュームを提供します。そうすれば、複雑なオブジェクト内のすべての三角形を処理せずに錐台カリングを実行できます。

背後に隠れているオブジェクトを描画しないようにすることを、オクルージョンカリングと呼びます。閉塞カリングは、一般的に錐台カリングよりも複雑です。ただし、同じ簡略化されたバウンディングボリュームを引き続き使用できることに注意してください。

于 2010-09-27T21:00:57.170 に答える
3

はい-錐台カリングは、表示されている錐台の完全に外側にあるオブジェクトを削除するだけです。多かれ少なかれ何もありません。はい、特に一度に多数のアイテムをカリングできる場合は、OpenGL自体よりもパフォーマンスを向上させる可能性があります(たとえば、ビューグラフライブラリはグラフのブランチ全体をかなり迅速に切り取ることができる場合があります)。

視聴者の反対側を向いている三角形(またはその他)を削除するフェイスカリングもありますが、これは錐台カリングとは別のものです

他のオブジェクトによって隠されているオブジェクトを処理する方法はいくつかあります。オクルージョンカリングは最も単純ですが、OpenGLはそれを直接サポートすることは何もしません(一部のハードウェアは拡張機能としてサポートしますが)。もう1つは、OpenGLが直接サポートするデプスバッファです。違いは、オクルージョンカリングはオブジェクト全体を調べ、完全に隠されている場合はオブジェクトをまったくレンダリングしないことです。デプスバッファはフラグメントごとに機能するため、オブジェクトを(ほぼ)完全にレンダリングした後にのみ実行されます。したがって、処理しているオブジェクトの数(およびそのようなもの)に応じて、独自のオクルージョンカリングを実行すると、かなり大きなメリットが得られます(デプスバッファが処理を実行する前に必要な多くのレンダリングを実行する必要がないため)。

于 2010-09-27T21:06:57.163 に答える
1

コードで錐台チェックを行うときは、描画されるオブジェクトを囲む単純なジオメトリを使用して行います。これは、カードが各三角形をカリングしようとするよりもはるかに高速に実行できます。

于 2010-09-27T20:59:52.753 に答える