回答:
地形データの保存方法の詳細については、こちらをご覧ください。チャンクを保存していますか?VBOを常に再構築していますか?すべての地形が1つのVBOにあり、一度にその一部をレンダリングしていますか?
ポリゴンごとにカリングしようとすると、節約するよりもオーバーヘッドが増える可能性があります。一度にテストできるテレインのチャンクが大きければ大きいほど、カリングはより速くなり、精度は明らかにトレードオフになります。最後に、そのトレードオフの最適なポイントを把握するためにプロファイリングを行う必要があるため、地形の分割方法を動的に変更できるシステムを作成すると非常に役立ちます。
GPU は既にポリゴンごとにポリゴンをカリングすることができますが、これはラスタライズ/セットアップ時に行われ、頂点シェーディングの後に発生します(頂点/ジオメトリ/ハル/ドメインシェーダーを使用)。これは、GPUがポリゴンの頂点をシェーディングして、最終的にカリングされる可能性があることを意味します。これが発生した場合、GPUは多くの作業を無料で実行するため、GPUサイクルの無駄になります。
このため、CPU側(またはDraw10directやプレディケートレンダリングなどのDX10 +機能を使用するGPU側)で非表示のジオメトリをカリングして、それらのバッチの描画を呼び出さないだけで、GPUサイクルを無駄にしないようにしています。
通常、そのポリゴンのバッチは、それらすべてのポリゴンを囲む球体またはボックスで表すことができます。次に、この境界球/ボックスが錐台に対してテストされ、錐台に接触すると、それらのポリゴンに対して描画呼び出しが呼び出されます。そうでない場合、描画呼び出しはスキップされます。オクツリーは、データを階層的に整理することを除いて、表示されるジオメトリのバッチを決定するもう1つの方法です。オクトリーは必ずしもすべてのジオメトリに適しているわけではありません。
球体/錐台の技術を説明するいくつかのかなり良い参考文献は以下の通りです: