2012-02-26 8 views
1

私はQuake3のソースコードを理解しようとしています。Quake 3のポータルと錐台のカリング

(tr_world.c)ファイルのR_MarkLeaves()関数が何をしているのか分かりますか?

これはポータルカリングで何かをしなければならないと思いますか?

私はこれがどのように動作するのか知っておく必要があります。私はレンダリングを高速化するためにこのコードを実装することもできます。

R_MarkLeaves()

答えて

0

カメラ/眼の位置所定のリーフノード(凸包)の事前計算 PVS(潜在的に目に見えるセット)をマークします。 BSPツリートラバーサルは、ソフトウェアレンダリングの描画順序の問題(深度ソート)を解決しますが、当時は依然としてオーバードローが多すぎました。 PVSは、現在のノード/位置から明らかにではないであるリーフノードをプルーニングするために使用されます。

+0

こんにちは、ブレット、 お返事ありがとうございます。 これは、オーバードロー問題を解決するより良い方法があることを意味しますか? R_MarkLeaves()を使用せずに各リーフを描画する前にクラスタの可視性をチェックしていますので、表示されるべきではない不透明な壁の背後にある幾何学でさえも取り除かれていません。 (例:q3dm01.bspマップで、私が廊下にいるとき、私のコードではまだ廊下に龍が描かれていますが、それは見えません) PVS redneringに何かがないか、 bspはしますか? – revolutionary

+0

@ user565223 - 「ドラゴンタング」のような幾何学的図形はベジェのサーフェスです。つまり、実行時/ロード時に細分化されています。それは、あらかじめ計算されたジオメトリセットのサイズの爆発を意味するため、静的レンダリングの一部であるとは思われません。これらの要素はおそらく他の動的要素(プレイヤー、ピックアップなど)と同様にレンダリングされます。このような要素を含む領域が潜在的に表示される場合は、HWが処理するのをより迅速かつ簡単に行うことができます。 –

+0

Thx Bret、そうです、それはベジェのサーフェスです。 ロード時にベジェのサーフェスのすべての地磁気を事前に計算します。 地図をレンダリングすると、bezeirサーフェスが潜在的に表示されるように表示されますが、サーフェスは実際には隠されていますがレンダリングされます。そしてそれは面をたくさん含んでいるので表面をレンダリングするのは非常に高価です。 HWが世話をすることは何を意味しますか? 私のあらかじめ計算されたベジェ曲線は、GlDrawArrays型関数に渡されるためです。 – revolutionary

関連する問題