3

OpenGL では、背面ポリゴンのみ、前面ポリゴンのみ、またはその両方を描画できます。マニホールド トライアングル メッシュをレンダリングする場合は、フレーム バッファをクリアして深度バッファをクリアせずに、後ろ向きのポリゴンのみを再度レンダリングします。何を見ると思いますか?

私に与えられた次の答えは間違っていると思います:

後ろ向きの三角形が見えるはずです。最初のレンダー パスでは、正面向きの三角形の深度値を持つ深度バッファーが生成されます。2 番目のレンダー パスは、後ろ向きの三角形をレンダリングしているため、深さの値が最大になります。ラスタライズされるすべての三角形には、そのピクセルの現在の深度値と比較した深度値があります。深度バッファーはすべての最も近い深度値 (小さい値) に設定されていますが、最も遠い深度値 (大きい値) を区別しているため、後ろ向きの三角形がレンダリングされます。"

しかし、答えは次のとおりだと思います。

深度バッファはクリアされておらず、まだ正面を向いている三角形の深度値が含まれているため、背面を向いている三角形は破棄され、何も表示されません。

正しい答えはどれですか?

4

2 に答える 2

1

場合によります!メッシュが 2 次元多様体 (つまり、表面上の任意の点の周りの十分に小さい領域上の平面と位相的に同等) であるオブジェクトのものであり、最初のパスが前面と背面を向いた三角形、または単に前面を向いた三角形をレンダリングすると仮定します。であり、深度関数が GL_LESS または GL_LEQUAL の場合、2 番目の段落は正しいです。なぜなら、前面の三角形は常に背面の三角形の前にあるため、深度テストは常に失敗するからです。

もちろん、深度関数として GL_GREATER または GL_GEQUAL を使用する場合は、その逆が成り立つため、最初の段落は正しいものになります。

于 2010-12-17T08:52:05.093 に答える
0

2番目の段落は間違っていると思います。

閉多様体であるメビウスの帯を想像してみてください。目に近いいくつかの後ろ向きの三角形(白、前向きは黒)をはっきりと見ることができます。2番目のパスでは、深度テストに合格し、レンダリングされます。

代替テキスト

于 2010-12-16T22:05:09.047 に答える