我的游戏引擎最近添加了PowerVR(PVR)支持,在Google和Wikipedia上进行了一些搜索之后,我只知道PVR的定义,但是我不知道PVR的用途是什么,它的优缺点是什么。我正在为Android开发游戏,应该使用PNG或PVR?
最佳答案
(PowerVR是Imagination Technologies Ltd.的品牌名称,指的是其图形加速技术。PVR是PowerVR Insider SDK中使用的纹理容器格式。PVRTC是PowerVR的纹理压缩方案,我认为您对此感兴趣...抱歉,如果不是)
PVRTC是一种运行时纹理压缩格式,可与PowerVR图形加速器一起使用(许多Android平台都具有其中一种)。与未压缩的32位纹理相比,PVRTC提供8倍或16倍压缩,每像素4位或每像素2位模式。因为它是一种运行时纹理压缩方案,所以它不需要在图形核心本身之外的任何阶段进行解压缩(并且那里有专用的电路用于该位),因此磁盘上的数据较小,上传到GL的数据较小,内存,渲染时使用的体积较小-几乎在所有方面都更快更好。在内存带宽非常宝贵且经常成为图形性能瓶颈的移动系统上,它可能会对您的帧速率产生巨大影响(并且功耗也很大,内存访问会消耗能量)。
缺点:
PVRTC往往比磁盘上的PNG大-例如,PVRTC数据压缩非常适合磁盘存储。
PVRTC是有损压缩-与源图像相比,有时会在PVRTC纹理中看到伪影。 PNG无损,所以没有问题
目前,PVRTC不能用于PowerVR以外的其他图形加速。请查看其他平台的DXT / S3TC(更大)或ETC(无alpha)压缩。
只有正方形的二维幂纹理可能会起作用-例如32x32、512x512等
压缩可能非常慢
PNG不是运行时格式,因此PNG压缩相对于未压缩图像有一个优势的唯一地方是存储在磁盘上(或通过网络发送等)-PNG图像数据必须先由CPU解压缩,然后才能进行压缩。传递给GL或以任何方式绘制(即PNG)在这些平台上获取纹理的速度都尽可能慢。
PNG是无损的,并且还支持Alpha通道。
所以...
为了获得最佳性能,请在可能的地方使用PVRTC,如果不能,请使用其他版本的纹理-例如压缩伪影太明显或运行的平台不支持压缩伪影的地方。
进一步阅读:
http://imgtec.com/powervr/insider/powervr-faq.asp
http://imgtec.com/powervr/insider/docs/PVRTextureCompression.pdf
http://imgtec.com/forum/default.asp
制作PVRTC纹理:
http://imgtec.com/powervr/insider/powervr-pvrtextool.asp
希望有帮助...
关于java - PowerVR的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6771331/