2009-06-02 21 views
10

XNAでは、複数のスプライトバッチを使用してゲームコンテンツをレンダリングするのが適切なのはいつですか?これまで私は二つ以上を使用したことがなく、このアプローチの欠点に気づいたことはありません。XNAで複数のスプライトバッチを使用する場合

何で状況が推奨または必要でさえされ、複数のspritebatchesを使用してますか?

答えて

7

複数SpriteBatchesを使用することが必要である非常に少数の例があります。 1つの例として、さまざまなスプライトのセットに異なる後処理/レンダリングステートメントを適用したい場合があります。スプライトバッチごとにセットが必要です。

通常、すべての可能な場合は、1つのバッチで、できるだけ多くのことを描画することははるかにパフォーマンスの高い複数のバッチ間で仕事を広げるよりもあることから、一つだけのバッチを使用することをお勧めと考えられています。さらに、単一のSpriteBatch内でのみソート順を制御できるので、異なるバッチのスプライト間の深さを制御するのが難しくなる(または不可能になる)ことがあります。要するに

:そこにあなたがこれをやってみたいことがあるに考えられる状況ではありますが、それはすべてのことは一般的ではないですし、あなたがを知っない限り、一般的に、あなたはあなたが望むものを達成することはできません1つSpriteBatchを使用してに固執する必要があります2つ以上を使用することなく。

+0

標準のユースケースは、ラップとして異なるTextureAddressModeを使用したいことができます – markmnl

0

また、代わりに、この周りを渡そうとのDrawableGameComponentあたりSpriteBatchを持っているDrawableGameComponentsと場合によっては容易であろう。

2

Here以上1つのSpriteBatchを使用する際の良い例である(ショーンさんのブログです - いつものように - 決定的なソース)。

SpriteBatchは、Endメソッドを呼び出すまで実際には描画を行いません。これは、異なる設定で複数の重なり合うバッチを開始し、バッチインスタンスの任意の組み合わせを使用して任意の順序でスプライトを描画し、各呼び出しの内容全体がEnd呼び出しの順序によって描画される順序を制御できることを意味します。この例では、アルファブレンディングと深さによってソートスプライトとシーンの性能を最適化についてであることを

注意。 (の場合は)パフォーマンス上の問題が発生すると、複数のSpriteBatchesを使用して何かが得られる可能性があります。それまでは、シンプルに保つ方がよいでしょう。

関連する問題