関数 gluPerspective() を使用して、ニア Z クリッピング プレーンとファー Z クリッピング プレーンを設定できます。
ある遠くの Z 平面でクリッピングされたシーンを描き、この Z 平面を超えて別のシーンを描きたいと思います。このクリッピングをフレームごとに 2 回行うことは可能ですか?
これを実行できない理由はありません。
最初のパースペクティブをセットアップし、最初のシーンを描画し、次に 2 番目のパースペクティブをセットアップして 2 番目のシーンを描画するだけです。すべて同じフレームの描画内で行います。
これは、一般にマルチパス レンダリングと呼ばれます。
glClear(GL_DEPTH_BUFFER_BIT);
最初に最も遠いシーンを描画し、最も近いシーンを描画する前に を実行する必要がある場合があります。
可能性として、シーンに異なる深度範囲を割り当てることができます。擬似コードは次のようになります。
glDepthRange(0.5, 1.0)
draw_far_scene
glDepthRange(0.0, 0.5)
draw_near_scene
近く/遠くのシーンで適切なクリッピングを実行するには、射影行列を設定する必要があります。
深度範囲の割り当ては、深度バッファが両方のレンダリングを「マージ」するのを防ぐために必要です。