0

我正在为 iOS 上的游戏测试我的精灵表的不同压缩。令人惊讶的是,我得到了更重要的内存 (RAM) 使用 PVR 2 位 alpha 而不是 PNG 32 (RGBA 4444)。一旦精灵表加载到内存中,我会说使用 PVR 2 位而不是 PNG 32 的消耗要高出 25%。我正在使用带有 xCode 的 Instruments 来验证物理设备(iPad Air 2)上的内存使用情况

我正在使用 TexturePacker 来生成我的精灵表。

我在任何地方都读过 PVR 2 或 4 的内存消耗比 PNG 32 少得多。这怎么可能?

编辑:

这很奇怪,因为根据我的观察,PVRTC 4 位 RGBA 使用的内存 (RAM) 比 PNG 32 多得多,根据 XCode 的 Instruments 几乎是 3 倍。PVRTC 2 位 RGBA 比 PNG 32 RGBA 4444 高 25%。我说的是实时 RAM 消耗,而不是磁盘大小,这无关紧要,也不是问题。似乎 iOS 管理 PVR 的方式与它应该做的不同,尤其是在将它们加载到 RAM 时。

编辑2:

我的纹理是 2048x2048,有 POT 并且有正方形格式。一切工作正常,除了 RAM 消耗比它应该的高得多。我使用通过 USB 电缆连接到我的 Mac 的物理 iPad Air 2 设备进行所有测试。我在 xcode 中使用 Instruments 来实时验证和跟踪 RAM 消耗。我通过切换到纹理除以 2 (1024x1024) 的 PNG 8 位(索引)格式解决了 RAM 消耗问题。我在代码中制作了一个比例 x2 来恢复正常大小的纹理。RAM 消耗下降到 240 MB(PNG 8 位索引)而不是 950 MB(PVR 2 位 RGBA)。我的游戏是一个视频拼图(15 fps 的 8 秒视频循环)并使用了很多精灵。(TexturePacker 生成的每个拼图中有 43 个精灵表,每个精灵表中大约有 130 个精灵)

4

0 回答 0