gpt4 book ai didi

image-processing - PVRTC 压缩增加了 PNG 的文件大小

转载 作者:行者123 更新时间:2023-12-04 16:28:15 28 4
gpt4 key购买 nike

对于 iPhone 游戏开发,为了性能,我从 PNG 格式切换到 PVRTC 格式。但是 PVRTC 压缩正在创建比 PNG 文件大得多的文件..所以 140 KB (1024x1024) 的 PNG 在 PVRTC 格式中膨胀到 512 KB 或更多.. 我在某处读到 50KB 的 PNG 文件被压缩为大约 10KB 和所有,在我的情况下,它的另一种方式..

出现这种情况的任何原因以及我如何避免这种情况..如果 PVRTC 压缩盲目地进行 4bpp 转换(1024x1024x0.5)而不管 PNG 中的透明度如何,那么我们在这里实现的压缩是什么..

我的游戏中有 100 张这些 1024x1024 的图像,因为有许多角色每个都在做一些复杂的动画..所以在每张图像 512KB 的速度下,我的应用程序将获得超过 50MB.. 这对我的客户来说是 Not Acceptable ..(与PNG,我可以让我的应用程序达到 10MB)。

最佳答案

通常,未压缩的图像数据是 24bpp (RGB) 或 32bpp (RGBA) flatrate。 PVRTC 是 4bpp(或 2bpp)固定速率,因此与此相比有 6 或 8(12 或 16)倍的压缩。

图形硬件本地使用纹理的一个要求是纹理的格式必须是硬件可以随机访问的。 PVRTC 是这种格式,PNG 不是,这就是为什么 PNG 可以实现更大的压缩率。 PVRTC 是一种运行时、部署格式; PNG 是一种存储格式。

PVRTC 压缩是一次对 4x4 像素块以固定比特率执行的,因此很容易计算出在内存中的哪个位置检索需要从中导出特定纹素值的数据,并且只需要一次访问内存。图形核心中有专用电路,可解码此 4x4 块并将纹素值提供给着色器/纹理组合器等。

PNG 压缩不能在固定比特率下工作,并且从中检索特定值更复杂;内存需要从多个位置访问以检索单个颜色值,并且每次读取纹理时都需要更多的内存和处理。所以它不适合用作原生纹理格式,这就是为什么你的纹理必须在图形硬件使用之前解压缩。与无需解压即可使用的 PVRTC 相比,这增加了带宽使用。

因此,对于离线存储(磁盘上应用程序的大小),PNG 比 PVRTC 小,PVRTC 比完全未压缩的要小。对于运行时内存占用和性能,PVRTC 比 PNG 更小、更快,因为它必须解压缩,因此与未压缩的纹理一样大和慢。您可能会在初始化磁盘访问时使用 PNG 获得一些优势,但是您会浪费时间进行解压缩。

如果您想减少 PVRTC 的存储占用空间,您可以尝试对纹理文件进行 zip 式压缩,并在从磁盘加载时扩展这些文件。

关于image-processing - PVRTC 压缩增加了 PNG 的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1686525/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com