1

私は iPhone で開発しており、ゲームの大部分は OpenGL ES を使用していますが、CGImage と Quartz を使用して表示するメニューもあります。OpenGL ES では、どのような画像圧縮 (JPG、PNG など) を行っても、テクスチャとしてメモリに格納されたデータは 8 ビット テクスチャであることがわかっています。 2 ビットまたは 4 ビット。大きな CGImage が原因でメモリの問題が発生しているので、私の質問は... Quartz と CGImage はどのような最適化と圧縮を使用するのですか? Appleのドキュメントで詳細を見つけることができません.256色の画像を配置することで違いが生じるかどうか、またはJPGとPNGを2のべき乗で使用する場合に違いがあるかどうかを本当に知りたいのですが、速度は重要ではありません。ここではメモリがボトルネックです。

ありがとう。

4

1 に答える 1

3

クォーツは圧縮されていません。これは、ピクセル単位で正確なコンテンツをすばやく合成およびレンダリングするためのものです。画像がコンテキストに描画されると、どこから来たかは関係ありません。コンテキストがピクセルごとに取るものは何でも、ピクセル数に関係なく取得します(正しく思い出せば、通常、デバイスのピクセルごとに4バイト)。それが行う 1 つの大きなことは、ブレンドを避けるためにアルファを事前に乗算することです。

現在、メモリが不足している一部のビューは、表示されていない場合はコンテンツを削除し、必要に応じて再構成できます。そのような場合、圧縮されたソースからの CGImage は通常、メモリの消費量が少なくなりますが、あなたが説明した場合には関係ないと思います。

于 2009-07-23T17:09:50.857 に答える