我正在播放大约 90 张图像 @ 480x320 的动画,我想知道图像不是 2 的幂,这会对性能造成很大的影响吗?我正在为 iphone 3Gs 编程。我也在使用 cocs2d。
问问题
65 次
2 回答
1
假设您在开始时加载所有这些图像并且它们是 16 位图像。
那么你将有 512x512x90 = 23,592,960 像素 16 位图像,即 377,487,360 位。377,487,360 位 = 45 MB RAM。
所以是的,这是一个很大的性能打击。
于 2012-10-11T20:11:40.763 回答
0
让我们来看看...
480x320 图像将创建 512x512 的纹理(下一个最接近的 2 次方)。512x512 乘以 32 位颜色深度(4 字节)等于 1 兆字节。90 乘以 1 兆字节等于 90 兆字节。
您最大的问题将是分配这么多内存并对其进行缓存。如果不缓存动画图像,则每次动画帧更改时都必须加载每个图像。从闪存加载 1 兆字节非常慢,我猜 > 100 毫秒。因此,每次帧发生变化时,您的应用都会停止几分之一秒。如果您使用 Retina 图像(每个 960x640 图像需要 4 MB 纹理内存),这将是 3GS 和 Retina 设备上的问题。
您只能通过使用 PVR 压缩图像(使用 TexturePacker)来改善这一点。即使将纹理大小减半到 16 位也可能不足以制作流畅的动画。
于 2012-10-11T20:17:02.207 回答