0

RTS ゲームのマップを texture2d として保存および表示しようとしていますが、マップが大きすぎて、「XNA Framework HiDef プロファイルは 4096 の最大 Texture2D サイズをサポートしています」というエラーが表示されます。マップ全体を 1 つのテクスチャに収めたいと思った理由は、spriteBatch がゲーム カメラで使用するソース/デスティネーションの rectnagle 描画メソッドを利用できるようにするためでした。これが明らかに悪い考えではない場合、大きな画像を保存して表示するにはどうすればよいですか?

4

1 に答える 1

2

XNA のテクスチャ サイズ制限を回避することはできません。複数のテクスチャを使用し、それらを異なる場所に描画することは非常に合理的です。境界線を処理するのは、ほんのわずかな余分なロジックです。

4096 x 4096 のテクスチャは、圧縮されていない状態ですでに 64MB ものテクスチャ メモリになっていることを忘れないでください (DXT 圧縮の場合は少なくとも 10MB)。

パフォーマンスが気になる場合は、気にしないでください。「ソース レクタングル」パラメータはテクスチャ アトラスを有効にしますが、これはここで行っていることではありません。

さらに、通常は、変換MatrixSpriteBatch.Beginに渡し、Drawすべて (背景を含む) を固定座標で ing することによって、ゲーム カメラを実装するのが最善です。背景のソース四角形を指定する必要さえありません。ビューポートは単にそれをクリップします。

4096 平方を超えるテクスチャをインポートする場合は、コンテンツ パイプライン拡張機能を作成して、これらの大きなテクスチャを小さなテクスチャに分割できます。または、少数の固定マップしかない場合は、イメージ エディターでそれらを分離する方が簡単です。

于 2013-01-08T13:09:36.113 に答える