2011-07-20 2 views
4

私はモデリングの目的でシーングラフベースのグラフィックエンジンを作成しています。私はXNA 4を使用しています。 レンダリング中にテクスチャの変更(およびその他の状態の変更)を最小限に抑える必要があるため、私はプリミティブをマテリアルなどで注文する必要があります。現代GPUのテクスチャ変更(およびその他の状態変更)コスト

私はXNA 4で1つのテクスチャを持つ数百のスタンフォードバニーモデルを作成し、次に同じ2つの異なるテクスチャを切り替えるXNA 4で小さなテストアプリケーションを作成しました。レンダリング時間には違いはありませんでした(ただし、100x100の小さなテクスチャを使用しました)。

だから私の質問は以下のとおりです。

  • は、私は本当にテクスチャ/カラー/他の材料パラメータによって私のプリミティブをソートする気にする必要がありますか?現代GPUではあまり重要ではありませんか?
  • 私はそうでない場合、予想されるパフォーマンス低下の割合はどれくらいですか?
  • パフォーマンスに影響する可能性のある状態の変更はありますか?
  • これについての最新の文献/ベストプラクティスガイドはどこにありますか?

ありがとうございました!

+0

ここで何の応答も得られない場合は、http://gamedev.stackexchange.com/をお試しください。 –

答えて

8

の長さがの場合、状態の変更は実際には高価ではありません。 バッチは高価です。(状態の変更には新しいバッチが必要です)。バッチは基本的にはDraw*Primitives関数への呼び出しです。

This PDF from nVidiaについて詳しく説明します。また、バッチ数を減らすためのアイデアも提供します。

バッチはCPUベースの制限(GPUではなく)です。そのPDFは、送信バッチがパフォーマンスを支配するポイントとして "< 130トリス/バッチ"をリストし、GPUはより多くのバッチを待ってアイドル状態になります(details)。また、バッチを送信するために費やされた1GhzのCPUパワーあたり60FPSで、フレームあたり約400のバッチが得られるとも言われています。 (PDFは少し古くなっているので、これらの数字は時代遅れです。)

私のanswer on the gamedev siteは、もう少し詳細を提供する必要があります。 This one too

+0

あなたの答えをありがとう、それは多くの助けになりました、これは私が必要としていたものです! – klapancius

関連する問題