繁体   English   中英

PVR纹理与OpenGL ES中的PNG

[英]PVR textures versus PNG in OpenGL ES

我正在为iPhone开发一个渲染大量纹理的2D应用程序。 它们中的大多数都是从具有Alpha透明度的PNG文件加载的。 作为测试,我一直在玩PVR测试,看看是否有任何性能差异。

PNG纹理加载了崩溃着陆示例附带的Texture2D类。 PVR-testures使用PVRTextureLoader示例中的PVRTexture类加载。 我使用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-maps
  • 磁盘空间使用因内容而异,对于简单图像而言非常小,对于逼真的图像几乎未压缩。
  • 可以直接快速地从任何图像编辑软件导出。

个人录像机:

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

PVRTC纹理的性能应该更好,因为它们是压缩的(有损)。 解压缩在图形硬件本身中完成。 传输的纹理数据越少,因此您可以获得更多带宽。 您为RAM和带宽节省支付的价格是质量损失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM