在Cocos2d for iPhone中,CCSpriteFrameCache会占用大量内存

时间:2012-06-16 13:21:37

标签: iphone ios memory-management cocos2d-iphone

我正在使用“活动监视器”来衡量我的应用程序的性能,并注意到我使用CCSpriteFrameCache中的精灵帧分配的精灵数确实会影响应用程序的实际内存使用量。

例如,如果我只加载带有2048 * 2048pixel纹理表的CCSpriteFrameCache,则App的实际内存使用量增加了16MB。每当我分配30个敌人精灵时,将textureatlas.png文件添加到CCSpriteBatchNode并使用这些帧分配CCSprites,实际内存只有非常小的增加(小于1MB)。 我不安静。

我想知道 CCSpriteFrameCache如何工作我是否应该使用sprites文件而不是纹理图集来优化实际内存使用。为什么以及如何使用纹理图集和CCSpriteFrameCache优化OpenGL性能?有没有人找到一篇解释这个主题的好文章?

此外,在编程指南中,有一些建议使用PVR格式来优化2位和4位纹理的内存使用(请参阅link)。我有一个由插画家制作的高品质的艺术品,如果我试图压缩它看起来垃圾。我什么时候可以考虑使用 PVR图像格式?这有什么好的例子吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

CCSprite实例只是带有参数集的对象。其中一个参数是指向要使用的纹理的指针。因此,纹理只需要在内存中放置一次。然后任意数量的精灵都可以使用它而不会占用大量内存。