返回博客
格式详解

PVR 格式:PowerVR 纹理压缩完整指南

16 分钟阅读

PVR (PowerVR) 格式是 Imagination Technologies 开发的专有纹理容器格式,专门为 PowerVR GPU 设计,并被 iOS 设备和移动平台广泛采用。作为 iOS 和许多嵌入式系统的原生纹理格式,PVR 支持 PVRTC (PowerVR Texture Compression) 算法以及其他压缩格式如 ETC 和 ASTC,使其成为移动游戏开发的通用选择。其硬件加速解码和高效内存使用对于性能和电池续航至关重要的移动应用来说是必不可少的。

什么是 PVR 格式?

PVR 是由 Imagination Technologies 开发的容器格式,用于存储针对 PowerVR GPU 优化的压缩纹理。最初为其移动图形处理器创建,该格式已成为 iOS 应用程序的事实标准,并在移动平台得到广泛支持。PVR 作为各种纹理压缩格式的包装器,最著名的是 PVRTC,它为移动设备提供高效的硬件加速压缩。

该格式的优势在于其对 PVRTC 压缩的原生支持,这种压缩专门为移动设备的限制而设计——有限的内存带宽、电池功率和处理能力。PVRTC 在保持可接受的视觉质量的同时提供出色的压缩比,使其成为性能至关重要的移动游戏和应用的理想选择。

除了 PVRTC,现代 PVR 文件还可以包含 ETC、ASTC 和未压缩纹理数据,使其成为一个灵活的容器,可以适应不同的设备能力。这种灵活性,加上与 iOS 开发工具的深度集成和广泛的硬件支持,使得 PVR 成为面向 iOS 和其他基于 PowerVR 平台的移动开发者的必备格式。

PVR 格式的主要特性

硬件加速

在 PowerVR GPU 上对 PVRTC 格式提供原生 GPU 硬件支持,零 CPU 开销

多格式支持

在单个容器中支持 PVRTC、ETC、ASTC 和未压缩格式

移动优化

专门为移动设备限制和电池效率而设计

完整 Mipmap 支持

原生 mipmap 链存储和高效细节级别管理

支持的压缩格式

PVR 容器格式支持多种压缩算法,每种都针对不同的使用场景进行了优化:

PVRTC(PowerVR 纹理压缩)

专门为 PowerVR GPU 设计的专有压缩格式,提供 2bpp 和 4bpp 两种变体。

PVRTC 在 PowerVR GPU 上提供出色的压缩比(4:1 到 8:1)和硬件加速。适用于 iOS 应用程序和基于 PowerVR 的移动设备。

ETC(爱立信纹理压缩)

移动设备的标准压缩格式,在 Android 和 iOS 平台上广泛支持。

ETC1 以 4:1 的比例提供 RGB 压缩,而 ETC2 增加了对带 alpha 通道的压缩支持。是 Android 纹理压缩的标准格式。

ASTC(自适应可扩展纹理压缩)

支持多种块大小和质量级别的现代压缩格式。

ASTC 提供出色的质量/压缩比,具有从 4x4 到 12x12 像素的灵活块大小。在较新的 iOS 和 Android 设备上得到支持。

ETC2/EAC

改进的 ETC 版本,具有更好的质量和 alpha 通道支持。

ETC2 在 ETC1 基础上改进了质量,而 EAC 为法线贴图和单通道纹理提供压缩。

EAC(ETC Alpha 压缩)

专用于 alpha 和单通道纹理数据的压缩。

EAC 为 alpha 通道和单通道纹理(如法线贴图或高度贴图)提供高效压缩。

未压缩格式

用于高质量要求的标准未压缩格式。

当压缩伪影不可接受时,支持 RGB、RGBA 和各种未压缩格式。

PVR 文件结构

PVR 文件遵循结构化格式,包含三个主要组件:

PVR 头部(52 字节)

包含文件元数据、版本信息、纹理尺寸和格式规范

纹理元数据

包括 mipmap 计数、表面计数、压缩标志和像素格式详情的附加信息

压缩纹理数据

按 mipmap 级别和纹理表面组织的实际压缩像素数据

PVRTC 压缩详情

PVRTC 有两个主要变体,每种都针对不同的质量和大小要求进行了优化:

PVRTC 2bpp(每像素 2 位)

更高的压缩比(8:1)但质量较低。适用于低细节纹理和背景。

最适合:背景纹理、UI 元素、低细节表面、内存受限的应用程序

PVRTC 4bpp(每像素 4 位)

更低的压缩比(4:1)但质量更高。大多数移动纹理的标准选择。

最适合:角色纹理、细节表面、通用纹理、iOS 应用程序

PVR 纹理开发工作流程

创建和优化 PVR 纹理涉及几个关键阶段:

1

源图像准备

准备具有适当尺寸的高质量源图像(旧设备最好是 2 的幂次方)

2

格式选择

根据目标平台和质量要求选择合适的压缩格式

3

纹理压缩

使用 PVRTexTool 或类似工具将源图像压缩为 PVR 格式

4

质量优化

调整压缩设置并查看结果以平衡质量和文件大小

5

应用程序集成

将 PVR 文件集成到您的应用程序中,具有适当的加载和错误处理

PVR 格式的主要优势

出色的压缩

PVRTC 提供 4:1 到 8:1 的压缩比,具有硬件加速解码

移动优化质量

专门为移动观看条件和显示特性而设计

格式灵活性

在单个容器中支持多种压缩格式以实现广泛兼容性

原生硬件支持

在基于 PowerVR 的设备上直接支持 GPU,无 CPU 解压缩开销

iOS 集成

与 iOS 开发工具深度集成,并在 Apple 框架中得到第一方支持

常见使用场景

iOS 游戏开发

iOS 应用程序的原生纹理格式,在所有 iOS 设备上具有最佳性能

移动游戏

适用于针对电池效率和性能优化的移动游戏

跨平台游戏

完美适用于支持 iOS 和 Android 并具有回退格式支持的游戏

WebGL 应用程序

通过 WebGL 支持针对移动设备的 Web 应用程序格式

嵌入式系统

在具有 PowerVR GPU 的嵌入式系统和汽车显示器中广泛使用

PVR 与其他格式的比较

了解 PVR 与其他纹理压缩格式的比较:

PVR 与 DDS

PVR 为移动平台优化,而 DDS 针对具有 BCn 格式的桌面游戏

PVR 与 KTX

PVR 具有更强的 iOS 集成,而 KTX 提供更好的跨平台标准化

PVR 与 ASTC

PVR 与 PVRTC 具有更广泛的遗留支持,而 ASTC 提供更好的质量和灵活性

PVR 与 ETC

PVR 提供更好的 iOS 支持,而 ETC 是具有更广泛硬件支持的 Android 标准

开发工具和资源

PowerVR SDK

Imagination Technologies 提供的官方 SDK,包含全面的 PVR 开发工具

PVRTex工具

用于创建和优化具有格式转换功能的 PVR 纹理的官方工具

Unity PVR 支持

Unity 纹理导入设置中内置的 PVR 压缩支持

虚幻引擎 PVR

Unreal Engine 中用于 iOS 和移动开发的原生 PVR 格式支持

Arm Mali 纹理压缩工具

用于 PVR 纹理压缩和格式比较的替代工具

PVR 开发最佳实践

使用 2 的幂次方尺寸以获得与旧 iOS 设备和 GPU 的最佳兼容性

除非内存约束需要 2bpp 压缩,否则大多数纹理选择 PVRTC 4bpp

在实际目标设备上测试压缩纹理以评估视觉质量和性能

当需要更高质量时,考虑将 ASTC 作为较新 iOS 设备的替代方案

使用适当的 mipmap 设置以优化不同观看距离的性能

在开发早期在目标硬件上验证 PVR 文件以避免兼容性问题

在选择 PVRTC、ETC 和 ASTC 压缩时考虑设备能力

迁移和现代替代方案

对于新项目,考虑这些迁移路径和现代替代方案:

从 ASTC 迁移到 PVR

使用 PVRTexTool 将 ASTC 纹理转换为 PVRTC 以实现旧 iOS 设备兼容性

从 ETC 迁移到 PVR

将 ETC 纹理转换为 PVRTC 格式以实现 iOS 特定优化和更好的集成

从 DDS 迁移到 PVR

使用纹理转换工具将桌面纹理迁移到移动优化的 PVR 格式

转向现代格式

考虑将 ASTC 用于针对较新设备的新项目,将 PVR 作为回退选项

结论

PVR 格式仍然是移动游戏开发中的必备工具,特别是对于 iOS 应用程序和基于 PowerVR 的设备。其硬件加速的 PVRTC 压缩为移动平台提供了视觉质量和性能的出色平衡,在这些平台上,电池续航和渲染效率至关重要。

虽然像 ASTC 这样的较新格式提供更好的质量和灵活性,但 PVR 的遗留支持、iOS 集成和经过验证的性能使其成为移动开发者的可靠选择。了解何时以及如何使用 PVR 格式对于优化移动应用程序和确保在不同设备生态系统中的最佳用户体验至关重要。

进一步阅读和资源

使用这些权威资源扩展您的知识:

试用我们的工具