【问题标题】:How to compress sprite sheets?如何压缩精灵表?
【发布时间】:2014-11-24 19:34:30
【问题描述】:

我正在 cocos2d-x 中制作一个包含大量精灵表的游戏。角色和效果太多,每个都使用帧序列。 apk 文件大于 400mb。所以我必须压缩这些图像。

实际上,序列中的每一帧与其他帧相比只有一点点差异。所以我想知道是否有一种工具可以压缩一系列帧而不是将它们放入精灵表中? (骨架动画可以提供帮助,但效果不能被视为骨架。)

比如有一个效果包括10个png文件,每个文件的大小为1mb。如果我使用 TexturePacker 将它们制作成精灵表,我将有一个 8mb 的大 png 文件和一个 100kb 的 plist 文件。总大小为 8.1mb。但是如果我可以使用帧之间的差异来压缩它们,也许我会得到一个 1mb 的 png 文件和 9 个 100kb 的文件,用于在加载过程中复制其他 9 个 png 文件。此方法只需要 1.9mb 大小的磁盘。而且如果我可以将它们转换成pvrtc格式,运行时所需的内存也可以减少。

顺便说一句,我现在正尝试在游戏加载过程中将 .bmp 转换为 .pvr。是否有任何转换为​​ pvr 的库?

谢谢! :)

【问题讨论】:

  • 由于您已经在使用 TP,只需将其输出格式更改为 pvr.ccz,您就可以获得最小的文件而不会造成质量损失、加载速度快、内存消耗少。双赢。加载时转换是毫无意义的,它只会激怒用户。
  • 你是对的,@LearnCocos2D。但是我们的 apk 文件在磁​​盘上太胖了,因此我们只获得了 A 等级。我的老板希望它被评为 S。所以我正在尝试减小磁盘大小。

标签: cocos2d-iphone pvrtc


【解决方案1】:

如果您有很多纹理要转换为 pvr,我建议您从www.imgtec.com 获取 PowerVR 工具。它带有 GUI 和 CLI 变体。 PVRTexToolCLI 为我完成了这项工作,我编写了一个大规模的转换工作。免费下载,免费使用,您必须在他们的网站上注册。

我刚刚测试过,它可以将许多格式转换为 pvr(包括 bmp 和 png)。

在你去那里(大规模的批处理作业)之前,我建议你尝试一些变体。 PVR(通常)在磁盘上很胖,加载速度很快,并且等效于 RAM 中的其他格式...... RAM 要求基本上取决于像素数以及为每个像素编码的位数。您可以使用 pvr 获得一些有趣的磁盘大小,具体取决于您使用的输出格式和位数......但它可能是有损的,并且您可以获得可见的伪像。因此,在决定全口径之前先尝试有限的样本。

即使在进行任何转换之前,我首先要看的是您的动画。由于您使用的是 TP,它可以检测重复帧并将 N 帧别名为纹理上的单个帧。例如,我的设计团队为我提供了所有 5 张图片但 8 帧的“行走/站立”动画! plist 包含缺失纹理的帧别名。在我所有的立场中,第 8 帧与第 2 帧相同,因此纹理只包含第 2 帧,但 plist 人为地生成了第 8 帧,它裁剪了第 2 帧的图像。

我要看的另一个地方是使用 16 位。这将有利于包大小、运行时的内存需求和加载速度。例如,将 RGBA565 用于没有透明度的纹理,或将 RGBA5551 用于动画。再次尝试一些以确保获得可接受的渲染效果。

玩得开心:)

【讨论】:

  • 谢谢!我已经尝试过 PowerVR 工具。如果我想将其他格式转换为 PVR,这真的很有帮助。但是,我仍然对 TP 的输出不满意。所以我想大大减少磁盘的大小。我仍在尝试压缩此精灵表,并可能在用户第一次运行游戏时解压缩它们。
猜你喜欢
  • 2012-02-23
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2017-01-07
  • 2019-04-15
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多