我正在开发iPhone,我们的大部分游戏都是使用OpenGL ES,但也有使用CGImage和Quartz才能显示的菜单。在OpenGL ES中,我知道无论图像压缩是什么(JPG,PNG等),存储在内存中作为纹理的数据都是8位纹理,除非我使用PVRTC,在这种情况下我可以得到它2或4位。由于CGImages很大,我们一直有内存问题,所以我的问题是...... Quartz和CGImage使用什么样的优化和压缩?我无法在Apple的文档中找到详细信息,当我真的想知道如果将256色图像放入,或者JPG与PNG相比,如果尺寸为2的幂帮助,速度是不重要的,记忆是这里的瓶颈。
感谢。
答案 0 :(得分:3)
Quartz是未压缩的。它用于快速合成和渲染像素精确内容。一旦你的图像被绘制到一个上下文中它们来自哪里并不重要,它们会采用每个像素所需的任何内容,无论它们有多少像素(如果我没记错的话,设备中每个像素通常为4个字节)。它做的一件大事就是预先混淆alpha以避免混合。
现在,一些内存压力下的观点可以在不显示的情况下逐出其内容,并根据需要重新构建。在这些情况下,来自压缩源的CGImage通常会占用更少的内存,但我怀疑这与您描述的情况无关。