3

I come from a 2D animation background and so when ever I us an animated sequence I prefer to use a sequence of images. To me this makes a lot of sense because you can easily export the image sequence from your compositing/editing software and easily define the aspect.

I am new to game development and am curious about the use of a sprite sheet. What are the advantages and disadvantages. Is file size an issue? - to me it would seem that a bunch of small images would be the same as one massive one. Also, defining each individual area of the sprites seems time cumbersome.

Basically, I dont get why you would use a sprite sheet - please enlighten me.

Thanks

4

3 に答える 3

6

すべてのデータが 1 つのテクスチャに含まれているため、スプライト シートのパフォーマンスが向上します。スプライト シートから同じアニメーションを再生する 1000 個のスプライトがあるとします。描画のプロセスは次のようになります。

Set the sprite sheet texture.
Adjust UV's to show single frame of animation.
Draw sprite 0
Adjust UV's
Draw sprite 1
.
.
.
Adjust UV's
Draw sprite 998
Adjust UV's
Draw sprite 999

テクスチャ シーケンスを使用すると、次の最悪のケースが発生する可能性があります。

Set the animation texture.
Draw sprite 0
Set the new animation texture.
Draw sprite 1
.
.
.
Set the new animation texture.
Draw sprite 998
Set the new animation texture.
Draw sprite 999

ガッ!すべてのスプライトを描画する前に、別のテクスチャを使用するようにレンダリング ステートを設定する必要があります。これは、いくつかの UV を調整するよりもはるかに遅くなります。

于 2010-08-19T02:01:24.897 に答える
5

多くの (ほとんどの?) グラフィックス カードでは、画像に 2 の累乗の正方形の寸法が必要です。たとえば、128x128、512x512 などです。ただし、多くの/ほとんどのスプライトはそのような寸法ではありません。次に、2 つのオプションがあります。

  • スプライト イメージを最も近い 2 の累乗の正方形に丸めます。16x32 のスプライトは、32x32 の透明ピクセル パディングで 2 倍の大きさになります。(これは非常に無駄です)
  • 複数のスプライトを 1 つの画像にパックします。透明度でパディングするのではなく、他の画像でパディングしてみませんか? それらの画像をできるだけ効率的に詰め込みましょう!次に、画像のセグメントをレンダリングするだけです。これは完全に有効です。

明らかに、2 番目の選択肢の方がはるかに優れており、無駄なスペースが少なくなります。したがって、複数のスプライトを 1 つの画像にパックする必要がある場合は、それらすべてをスプライト シートの形式でパックしてみませんか?

要約すると、グラフィック カードに読み込まれる画像ファイルは、2 の累乗で正方形でなければなりません。ただし、プログラムは、そのテクスチャの任意の長方形を画面にレンダリングすることを選択できます。2 の累乗または平方である必要はありません。そのため、テクスチャ スペースを最も効率的に使用するには、テクスチャに複数の画像をパックします。

于 2010-08-13T03:04:19.390 に答える
3
  • スプライト シートは小さいファイルになる傾向があります (全体のヘッダーが 1 つしかないため)。
  • 複数のディスク アクセスではなく 1 回のディスク アクセスでスプライト シートの読み込みが速くなります。
  • 一度に複数のフレームを簡単に表示または調整できます
  • 1 つのサーフェスにすべてをロードすると、無駄なビデオ メモリが少なくなります (Ricket が言ったように)。
  • 個々のスプライトはオフセットによって線引きすることができます (例: 暗黙的なグリッド上 - 各スプライトの位置を明示的にマークしたりメモしたりする必要はありません)

スプライト シートを使用しても大きなメリットはありませんが、いくつかの小さなメリットがあります。しかし、この慣行は、ほとんどの人が適切な 2D グラフィック ソフトウェアを使用してゲーム グラフィックを作成する前の時代にさかのぼり、当時はアーティストのワークフローが必ずしも最も重要なものではありませんでした。

于 2010-08-17T09:16:18.007 に答える