1

我的游戏引擎最近增加了对PowerVR(PVR)的支持,在谷歌和维基百科上搜索了一下,我只知道PVR的定义,但我不知道它是干什么用的,它的优缺点是什么。我正在为 Android 开发游戏,我应该使用什么,PNG 还是 PVR?

4

1 回答 1

7

(PowerVR 是 Imagination Technologies Ltd. 的品牌名称,指的是他们的图形加速技术。PVR 是 PowerVR Insider SDK 中使用的纹理容器格式。PVRTC 是 PowerVR 的纹理压缩方案,我认为您对此感兴趣......抱歉,如果你不是)

PVRTC 是一种用于 PowerVR 图形加速器的运行时纹理压缩格式(许多 Android 平台都有其中之一)。与未压缩的 32 位纹理相比,PVRTC 在每像素 4 位或每像素 2 位模式下提供 8 倍或 16 倍压缩。因为它是一个运行时纹理压缩方案,它不需要在图形核心本身之外的任何阶段解压缩(并且那里有专门的电路用于该位),因此磁盘上的数据更小,上传到 GL 的数据更小,上传到 GL 的数据更小渲染时使用的内存更小 - 几乎在所有方面都更好更快。在移动系统上,内存带宽非常宝贵并且通常是图形的性能瓶颈,它可以对您的帧速率产生巨大影响(以及功耗 - 内存访问需要功耗)。

缺点:

  • PVRTC 往往比磁盘上的 PNG 大 - PVRTC 数据压缩(例如)非常适合磁盘存储。
  • PVRTC 是有损压缩 - 与源图像相比,有时可以在 PVRTC 纹理中看到伪影。PNG是无损的,所以不存在问题
  • PVRTC 不可用于除 PowerVR 之外的其他图形加速(目前) - 查看其他平台的 DXT/S3TC(更大)或 ETC(无 alpha)压缩。
  • 只有正方形、二维的幂纹理可能起作用 - 例如 32x32、512x512 等。
  • 压缩可能很慢

PNG 不是运行时格式,因此 PNG 压缩比未压缩图像具有优势的唯一地方是存储在磁盘上(或通过网络发送等) - PNG 图像数据必须先由 CPU 解压缩才能被解压缩传递给 GL 或以任何方式绘制,即 PNG 与这些平台上的纹理一样慢。

PNG 是无损的,还支持 alpha 通道。

所以...

为获得最佳性能,请尽可能使用 PVRTC,如果不能,请使用其他版本的纹理 - 例如,压缩伪影太明显或您运行的平台不支持它。

进一步阅读:

要制作 PVRTC 纹理:

希望有帮助...

于 2011-09-16T15:28:06.503 回答