我正在为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更好吗?
高精度的颜色表示,而不是有损
磁盘读取/解压缩较慢.
慢速上传到图形硬件,内部像素重新排序(混合)由驱动程序执行.可能还有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和带宽节省支付的价格是质量损失.