5

私はかなり長い間これを尋ねるつもりでした。非常に大きな背景を描くこのゲームを作成しています。しかし、問題は (もちろん) ゲームにさらに要素を追加すると、OutOfMemory Exception が発生することです。

私が質問したいのは、画像を圧縮するとヒープサイズの割り当てが減るということですか? たとえば、私の PNG 背景 (3000 x 2000 ピクセル) は約 1.5 MB です。一連の PNG 圧縮 (TinyPNG や PNGGauntlet などのソフトウェアを使用) の後、背景のサイズは 712 KB に大幅に縮小されました。ここで圧縮された画像は、元の画像と同じサイズ (3000 x 2000) のままです。

元のバックグラウンド サイズ (1.5 MB) のヒープ サイズの割り当ては、圧縮されたもの (712 KB) と同じになりますか?

4

1 に答える 1

1

答えはイエスです。圧縮された画像と圧縮されていない画像の両方が同じ量のメモリを占有します。最終的には、R、G、B(、A) 値のグリッドになります。
メモリを節約できるのは、GPU が直接サポートする形式の圧縮 (OpenGL テクスチャの S3TC 圧縮など) を使用している場合のみです。

圧縮により、ディスク上のファイル サイズと、ファイルのロードに必要な IO 時間の 2 つが削減されます (ただし、この節約は、解凍プロセスによって相殺される場合があります)。

ただし、画像を A​​RGB_8888 以外のビットマップ タイプ (RGB_565 など) にロードすることを検討することもできます。これにより、ビットマップを格納するために必要なメモリ量が削減されます (ただし、画像の品質は低下します)。

于 2013-01-25T14:22:09.007 に答える