在iPhone上将.png转换为PVRTC*

bra*_*use 6 iphone objective-c

是否有标准机制或已知库将.png图像转换为iPhone本身的压缩PVRTC纹理(而不是在OS X上使用标准工具进行开发).

我的应用程序中有许多.png纹理,但交换是一个问题.我想在应用程序启动时(或者可能是第一次加载应用程序时)可用内存不足,在设备上创建.pngs的PVRTC变体.

Bar*_*tox 2

我还没有在网上看到任何有关如何手动构建 PVRTC 图像的信息,并且据我所知,iPhone 中不支持此功能(并且不需要读取 PVRTC 文件)。

对于大多数应用程序来说,包含或构建两个版本的文件没有什么意义。在最佳条件下,PVRTC 版本实际上应该与 PNG 版本没有区别,实际上只是文件的“预处理”版本,针对直接流式传输到视频内存中进行了优化。

通常最好检查所有图像并决定如何最好地打包图像,以平衡所有用户的内存节省和质量,而不仅仅是在特定的受限内存情况下。

需要考虑的一些事情(如果这是多余的知识,我们深表歉意):

  1. PVRTC 文件在处理复杂的 Alpha 混合图像时可能会出现问题,因为预处理可能会导致混合边缘出现难看的伪影。
  2. 不透明 PNG 文件应在原始图像中删除其 Alpha 通道(节省内存和混合开销)。
  3. 对于颜色范围有限的图像,请将图像从 PNG32 缩小为 PNG16 或 PNG8 以节省磁盘内存。
  4. 如果这是基于 OpenGL 的程序,请考虑使用纹理2D 的增强版本(例如来自 Cocos2D),它支持替代像素格式,例如 565 和 4444。这可以大大减少显卡的开销,同时对图像质量的影响最小,通过仔细选择与原始图像中颜色平衡相对应的像素格式。
  5. 此外,对于基于 OpenGL 的程序,请避免使用单独的图像 (320x480) 作为背景,因为这将导致每个图像在内存中产生 512x512 的纹理。将图像分成更小的部分或将图像设为 512x512,并用其他图像填充额外的空间,以便仅需要加载一个纹理。
  6. 与所有事情一样,首先关注最大的图像才能获得最大的收益。

还值得注意的是,由于您的应用程序将是唯一运行的东西(系统应用程序除外),因此唯一的实际内存开销将是有限的“磁盘”空间。制作所有图像文件的第二个副本实际上会对您不利,而不是有帮助。

巴尼