2012-01-21 15 views
2

私は3Dでタイル状の地形をXNAで作成しようとしています。
(RiemersとAllens)のチュートリアルを確認しました。 Allensのチュートリアルでは達成しようとしている正確な結果が得られました。
しかし、私はパフォーマンスについてはわかりません - 彼は
すべての地形を描画し、ピクセルシェーダで処理するように単一の四辺形を使用しているらしい - 全体の地形はそれぞれ
フレーム。
現在、私は各タイル(Example)の四辺形を描いています - それは
の可視タイルだけを描くことができますが、さらに多くの頂点が各
フレームで処理される必要があり、多くの "DrawIndexedPrimitives" 。
私はそれを正しくやっていますか?タイル張りの地形を改善する方法はありますか?
ありがとうございます。3dタイル状の地形

答えて

3

地形の複雑さとサイズによって異なります。通常、複数のクワッド/タイルを持つテレインタイル(たとえば、タイルは4096個の三角形で構成できます)を作成し、必要なテレインを得るために頂点を移動します。それでも、各タイルはインデックス付きのプリミティブですが、1回の描画呼び出しでは多くの三角形が生成され、地形の大部分が生成されます。このアイデアをさらに踏まえれば、遠くのタイルを大きくすることができます(詳細については、四分木/クリップマップベースの地形のアプローチを参照してください:http://twitpic.com/89y5kn)。

また、頂点シェーダで移動できる場合は、インスタンス化を使用してドローコールの量をさらに減らすことができます。インスタンスごとに、あなたはあなたのハイフィールドとワールドスペースの位置にUV座標を渡してから、再び高解像度のタイルをレンダリングしますが、今度は地形全体に対して一回の描画呼び出しで終了するかもしれません。

小さなゲームでは、高解像度のタイル(わずか65kの三角形など)を生成し、それを円錐形で切り取りたい場合があります。それはあなたに大きな地形を簡単に与え、まだ管理可能です。しかし、これは間違いなくあまりにもスケールしません:)あなたのニーズによって異なります。

テクスチャタイルの場合、低解像度のインデックステクスチャを使用して、ピクセルごとにアトラスを参照するか、またはインデックスを頂点バッファに格納して補間することができます(これは非常に一般的です)。Store 4 weights頂点あたり4つの異なるテクスチャをルックアップするために使用します)。

関連する問題