我正在为iPhone开发一个2D应用程序,该应用程序可以渲染许多纹理。目前,大多数文件是从具有Alpha透明度的PNG文件中加载的。作为测试,我也一直在使用PVR测试,以查看是否存在性能差异。

PNG纹理加载有崩溃着陆示例随附的Texture2D类。从PVRTextureLoader示例中,使用PVRTexture类加载PVR测试。我使用Apple的texturetool创建PVR纹理。

作为测试,我渲染了一个背景(512 * 512),并在这36个90 * 64像素精灵(来自512 * 512纹理)上具有透明性。 PVR纹理的渲染速度约为58 fps,PNG的渲染速度约为47 fps。这是我可以期望的,还是应该更大?而且,texturetool生成的纹理看起来真的很糟糕,PVRTexTool更好吗?

最佳答案

PNG:

  • 高精度颜色表示,无损
  • 从磁盘读取/解压缩速度较慢。
  • 上传到图形硬件的速度很慢,内部像素重新排序(晃动)由驱动程序执行。可能还会在RGBA BGRA ARGB之间进行转换,尽管Xcode通常会将PNG转换为对硬件更优化的颜色格式。
  • 由于内存带宽有限(GPU需要从内存中读取更多字节),渲染速度较慢。实际减慢量取决于使用情况。放大率低于1倍且没有MIP映射时,此问题最明显。
  • 占用更多RAM / VRAM空间。
  • 可编辑,可以在上传之前由您的软件过滤/混合/调整大小/转换。
  • 驱动程序
  • 可以在纹理上载期间自动生成Mip贴图
  • 磁盘空间使用量随内容而变化,对于简单图像而言很小,对于照片般逼真的图像几乎未压缩。
  • 可以直接,快速地从任何图像编辑软件导出。

  • PVR:
  • 低精度有损压缩。提供2个压缩级别,每个像素2位和每个像素4位。块状,可能会损坏锋利的边缘和平滑的渐变。图像质量随内容而异。 3或4个颜色通道,因此可以使用alpha通道,但是有损压缩可能会产生不良结果。
  • 从磁盘快速加载,无需软件解压缩。
  • 由于它是一种内部硬件格式,几乎即时纹理上载将通过驱动程序而不会发生变化。
  • 由于较小的内存带宽使用量,因此呈现速度很快。使用PVR纹理时,像素渲染速度主要受其他因素的限制。
  • 使用最少的RAM和VRAM空间。
  • Mip贴图必须预先生成。
  • 您不能在软件AFAIK中生成或编辑PVR。否则会很慢。
  • 磁盘空间使用量与源镜像大小(固定压缩率)成正比。可以通过其他方法进一步压缩(轻微)。
  • 大小限制。 2的幂,仅平方。
  • 需要附加的转换工具,处理可以自动化,但是会大大降低构建时间。
  • 07-28 03:56