大数跨境

游戏制作行业为什么使用TGA格式的贴图而不使用PNG格式?

游戏制作行业为什么使用TGA格式的贴图而不使用PNG格式? 游戏开发技术教程
2019-08-19
58
导读:PNG32也带有alpha通道,并且支持无损压缩,压缩率更高,存储体积更小,为什么游戏行业更多的是使用TGA格式存储贴图。

为何游戏行业偏爱TGA而非PNG?真相揭秘

PNG32也带有alpha通道,并且支持无损压缩,压缩率更高,存储体积更小,为什么游戏行业更多的是使用TGA格式存储贴图。

游戏开发中关于图像格式的选择存在诸多误解,本文旨在澄清事实。

只使用TGA而不采用其他格式的核心原因只有一个:开发流程中的惰性与便利性,而非技术优势。

关于PNG Alpha通道被优化问题

该说法不成立。大量游戏实际采用PNG存储纹理,尤其是UI元素。由于DXT/PVR等硬件压缩格式为有损压缩,在处理边缘清晰的UI图形时表现不佳,因此即便整体使用硬件压缩,UI部分仍普遍采用PNG格式。

256色PNG加Alpha通道的文件体积较小,适用于图形简单的游戏场景。

关于TGA无需解码速度更快的说法

此观点错误。实际测试表明,加载1000张PNG/JPG图片的速度远超同等数量的BMP/TGA图片。虽然TGA省去了解码步骤,但其较大的文件尺寸导致I/O开销显著增加,总体加载时间反而更长。

现代CPU处理PNG/JPG解码负担极轻,JPG已有硬件加速支持,因此TGA在速度上并无优势,尤其在大图或首次加载无缓存情况下劣势明显。

资源打包后都会压缩,TGA也能变小?

尽管打包系统常内置压缩算法(如zip/rar/lzma2),但PNG本身具备多方向预测和差分编码机制,压缩效率优于原始TGA再进行通用压缩。以一张普通UI截图为例:
- PNG(经TinyPNG优化):74.8KB
- TGA:1.04MB
- TGA+RAR:198KB
- TGA+lzma2:170KB

即便使用高效压缩算法,TGA压缩后体积仍为优化PNG的2.3倍,说明直接使用PNG可显著减少磁盘占用。

因需转为DXT/PVR硬件格式,故不用PNG?

该理由有一定合理性。DXT/PVR等格式占用显存更少,适合大多数非UI纹理,并支持mipmap存储,使用便捷。

但更优策略是在磁盘上保留JPG/PNG等高压缩比格式,运行时动态转换为DXT/PVR。mipmap可分离存储并按需生成,例如美术提供关键层级,其余通过bicubic插值生成。

已有成熟工具支持实时压缩,如PC端的libsquish,以及Unity中的ETC/PVR动态生成插件。这些工具采用低精度近似算法,在视觉无显著差异的前提下大幅提升压缩速度。

理想方案是发布时使用传统压缩格式降低安装包体积,提升用户下载效率;运行时转换为目标硬件格式并缓存,避免重复计算。

最终推荐方案

  • 基础方案:界面使用PNG(优先8位带Alpha),非界面使用DXT/PVR/ETC
  • 进阶方案:界面采用WebP或BPG,普通纹理仍用DXT/PVR/ETC
  • 极致优化:全量使用BPG(支持有损与无损),运行时按需动态生成DXT/PVR/ETC格式并启用缓存机制

FLIF虽具备优异的无损压缩率,超越BPG与WebP,但其解码性能过慢,目前尚不具备实用价值,需持续观察其发展。

作者:韦易笑
来源:www.zhihu.com/question/340196227/answer/789538293

【声明】内容源于网络
0
0
游戏开发技术教程
各类跨境出海行业相关资讯
内容 1642
粉丝 0
游戏开发技术教程 各类跨境出海行业相关资讯
总阅读45.2k
粉丝0
内容1.6k