RTS ゲームのマップを texture2d として保存および表示しようとしていますが、マップが大きすぎて、「XNA Framework HiDef プロファイルは 4096 の最大 Texture2D サイズをサポートしています」というエラーが表示されます。マップ全体を 1 つのテクスチャに収めたいと思った理由は、spriteBatch がゲーム カメラで使用するソース/デスティネーションの rectnagle 描画メソッドを利用できるようにするためでした。これが明らかに悪い考えではない場合、大きな画像を保存して表示するにはどうすればよいですか?
質問する
4145 次
1 に答える
2
XNA のテクスチャ サイズ制限を回避することはできません。複数のテクスチャを使用し、それらを異なる場所に描画することは非常に合理的です。境界線を処理するのは、ほんのわずかな余分なロジックです。
4096 x 4096 のテクスチャは、圧縮されていない状態ですでに 64MB ものテクスチャ メモリになっていることを忘れないでください (DXT 圧縮の場合は少なくとも 10MB)。
パフォーマンスが気になる場合は、気にしないでください。「ソース レクタングル」パラメータはテクスチャ アトラスを有効にしますが、これはここで行っていることではありません。
さらに、通常は、変換Matrix
をSpriteBatch.Begin
に渡し、Draw
すべて (背景を含む) を固定座標で ing することによって、ゲーム カメラを実装するのが最善です。背景のソース四角形を指定する必要さえありません。ビューポートは単にそれをクリップします。
4096 平方を超えるテクスチャをインポートする場合は、コンテンツ パイプライン拡張機能を作成して、これらの大きなテクスチャを小さなテクスチャに分割できます。または、少数の固定マップしかない場合は、イメージ エディターでそれらを分離する方が簡単です。
于 2013-01-08T13:09:36.113 に答える