关于 PKM 格式
PKM(爱立信纹理压缩)是专门为 ETC1 压缩纹理设计的简单高效容器格式。它已成为移动游戏开发的标准格式,特别是在 Android 平台上。
轻量级结构
最小化文件头开销,针对移动设备的快速加载和解析进行优化。
ETC1 压缩
使用 ETC1 压缩,为 RGB 纹理提供 6:1 的压缩比,支持硬件解码。
广泛的硬件支持
所有 OpenGL ES 2.0+ 设备都支持,确保在 Android 生态系统中的兼容性。
简单格式
直观的规范使其易于实现自定义读取器和写入器。
技术规格
文件结构
- •16 字节头部,包含魔数、版本、格式类型和尺寸
- •头部后跟原始 ETC1 压缩纹理数据
- •可选的 mipmap 链按顺序存储
压缩详情
- Type:
- ETC1(爱立信纹理压缩 1)
- Block Size:
- 每块 4×4 像素
- Ratio:
- 6:1 压缩比(每像素 4 位)
- Quality:
- 针对自然图像和漫反射纹理优化
限制
- ETC1 不支持透明通道(仅 RGB)
- 方形、2 的幂次纹理可获得最佳性能
- 在具有尖锐颜色过渡的纹理上可能出现伪影
常见用例
移动游戏开发
Android 游戏的主要纹理格式,需要硬件加速解压缩和高效内存使用。
漫反射纹理
非常适合漫反射贴图、环境纹理和无透明度的 UI 元素。
旧版 Android 支持
对于面向使用 OpenGL ES 2.0 的旧版 Android 设备的游戏至关重要。
资源管线集成
游戏引擎和纹理压缩工具广泛支持,可实现自动化工作流程。
PKM 与其他格式对比
ktx
KTX 提供更多灵活性支持多种压缩格式,但开销更大
astc
ASTC 提供更好的质量和透明通道支持,但需要更新的硬件(OpenGL ES 3.0+)
pvr
PVR 针对 PowerVR GPU 优化,但在非 PowerVR 设备上支持有限
png
PNG 是无损的,但文件大小大得多,需要 CPU 解压缩
相关工具与资源
外部工具
- →ARM Mali 纹理压缩工具
- →Imagination PVRTex工具
- →Android SDK etc1tool 实用程序