Vol*_*ort 3 opengl-es cocos2d-iphone ios
据我所知,用texturetool制作的PVR纹理只是压缩图像.因此,差异在于文件大小.
坦率地说,文件大小对我不感兴趣.我想知道的是,PVR纹理能否比普通的.PNG纹理消耗更少的RAM?或者这完全取决于纹理格式(如RGBA8888
等)?
关键问题是:
给定X.png
和X.pvr
,如果我用纹理格式显示两者,那么RGBA8888
一个消耗的RAM会比另一个少吗?
是的,PVR将在所有阶段消耗更少的RAM - 它在被访问时由GPU实时解压缩.没有中间减压.
数字视频中使用的类似PVR的方法是,不是在每个像素处存储RGB,而是转换为YUV,然后在每个像素处存储Y,并且每四像素块仅存储U和V两次.所以你从块的128位到64位.为了返回RGB,输出器读取完全正确的Y并根据需要插入或访问最近的U和V.
像PVR这样的方案类似的做法是不在每个像素上存储全部值,而是从附近的上下文中推断出部分值.计算在附近的是直接对应的,但是在该GPU上安排了缓存.通常更深入的是缩小某些通道的采样分辨率,例如为样本指定基本偏移,然后对每个通道使用微小的精度也很常见.
因此,GPU总是可以通过仅读取数据的非常小的本地区域中的值来获得像素X的值.
这与像PNG这样的传统方案形成对比,如果它改善压缩,必须知道X之前的流中的每个像素是可接受的.实时处理这些东西会淹没GPU的内存带宽,因此完全不切实际,因此这些纹理从磁盘解压缩然后上传.
因此,像PVR这样的方案往往导致压缩较差和每像素质量较低,但胜利的是它们可以在VRAM中压缩.如果使用PVR试图找到舒适的平衡,游戏通常会增加其纹理的分辨率.
归档时间: |
|
查看次数: |
563 次 |
最近记录: |