代码之家  ›  专栏  ›  技术社区  ›  Eli

石英如何处理纹理压缩?

  •  1
  • Eli  · 技术社区  · 15 年前

    我正在iPhone上开发,我们的大部分游戏都使用OpenGLES,但也有一些菜单使用CGIMAGE和Quartz来显示。在OpenGL ES中,我知道无论图像压缩是什么(JPG、PNG等),作为纹理存储在内存中的数据都是8位纹理,除非我使用pvrtc,在这种情况下,我可以将其压缩到2或4位。由于CG图像太大,我们一直有内存问题,所以我的问题是…Quartz和CGImage使用哪种优化和压缩?我在苹果的文档中找不到细节,当我真的想知道把256色的图片放进去会不会有什么不同,或者JPG和PNG,如果尺寸是2倍的帮助等等。速度不重要,内存是这里的瓶颈。

    谢谢。

    1 回复  |  直到 13 年前
        1
  •  3
  •   Marc Edwards    13 年前

    石英是未压缩的。它用于快速合成和渲染像素准确的内容。一旦你的图像被绘制到一个上下文中,不管它们来自何处,它们都会以每像素的上下文所占的像素为单位(如果我能正确回忆的话,通常是每像素4字节)。它所做的一件大事是对alpha进行预乘以避免混合。

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