1

DX11 でスプライトを実装しようとしていますが、テクスチャリングの進め方がわかりません。

まず、複数のスプライトがあり、それぞれが異なるテクスチャ (アトラス) を使用している可能性があります。しかし、画面上にいくつのスプライトがあるかわからないためTexture2D[x]、シェーダー コードでは使用できません。

を使用して調べましたが、オブジェクト自体をテクスチャの配列としてTexture2DArray初期化する必要があります。D3D11Texture2Dある瞬間にスプライト A、B、C が画面に表示され、次の瞬間にスプライト B、C、D が画面に表示されるため、これは問題のように思えます。したがってD3D11Texture2D、B テクスチャと C テクスチャを含む 2 つのオブジェクトを作成する必要があります。いずれにせよ、配列内のテクスチャは同じサイズでなければならないようです..

そして、それは絶対的な災害です。だから - 配列について欠けているものはありますか? そして、これを最も効率的な方法で行うためのオプションは何ですか? 単一のテクスチャを設定し、そのテクスチャを使用するすべてのスプライトを描画して、繰り返す必要がありますか? それもかなり悪いように見えるからです。

前もって感謝します!

PS。これが時期尚早の最適化かもしれないことはわかっていますが、私は DX に不慣れであり、適切にコーディングすることやライブラリを適切に使用することを学ぶことは私にとって興味深いことです。ですから、悪い解決策を書くよりも、少し時間を費やしたいと思います。

4

1 に答える 1

0

スプライトを描画するときの非常に一般的な最適化の 1 つは、通常は画面に同時に表示されるスプライトのテクスチャをマージすることです。したがって、それらすべてを 1 回の Draw Call で描画できます (texcoords を変更するだけです)。

于 2014-02-14T07:19:41.877 に答える