1

我在 iPhone 上进行开发,我们的大部分游戏都使用 OpenGL ES,但也有一些菜单使用 CGImage 和 Quartz 来显示。在 OpenGL ES 中,我知道无论采用何种图像压缩方式(JPG、PNG 等),作为纹理存储在内存中的数据都是 8 位纹理,除非我使用 PVRTC 在这种情况下我可以得到它2 或 4 位。由于 CGImage 较大,我们一直存在内存问题,所以我的问题是...... Quartz 和 CGI​​mage 使用什么样的优化和压缩?我在 Apple 的文档中找不到详细信息,当我真的想知道放入 256 色图像或 JPG 与 PNG 是否会有所不同,如果尺寸为 2 次方有帮助,等等速度并不重要,内存是这里的瓶颈。

谢谢。

4

1 回答 1

3

石英是未压缩的。它用于快速合成和渲染像素精确的内容。一旦您的图像被绘制到一个上下文中,它们来自哪里都无关紧要,无论它们拥有多少像素(如果我没记错的话,通常在设备中每个像素 4 个字节),它们会采用每个像素所需的任何上下文。它所做的一件大事是预乘 alpha 以避免混合。

现在,一些处于内存压力下的视图如果不显示它们的内容,可以逐出它们,并根据需要重新构建它们。在这些情况下,来自压缩源的 CGImage 通常最终会占用更少的内存,但我怀疑这与您描述的情况无关。

于 2009-07-23T17:09:50.857 回答