在Cocos2d(使用精灵表)中加载纹理时,内存使用量如何增加?

时间:2011-08-02 00:02:41

标签: ios ipad memory cocos2d-iphone sprite-sheet

我正在构建一个使用Cocos2d创建内容地图的应用程序(技术上是图论中的一棵大树)。每个节点由具有自己纹理的精灵表示,叶节点都具有第二个“按下按钮”纹理。此外,一些节点是PNG动画。我有一个包含130个左右节点纹理的精灵表,以及3个用于动画的精灵表。总而言之,这4个文件加起来只有大约18.4 MB。

如果我运行应用程序并且不运行cocos2d部分(即从不启动框架,因此永远不会加载纹理)应用程序运行大约10 MB。当我加载Cocos2d和那些精灵表时,内存会超过90 MB。

我所有的研究似乎都说我正在以最有效的方式做事,但由于内存使用率已经很高,我在iPad 1上遇到了很多与内存相关的崩溃。

cocos2d这是正常的吗?由于图像本身不是那么大,因为精灵的数量,它是否使用了如此多的内存?有没有办法减少内存占用?我很茫然,而且还在枪口下......

1 个答案:

答案 0 :(得分:3)

事实证明,通过将精灵打包成大的精灵表来实现的效率是在渲染时间内测量的,而不是在内存中保存的。无论是在UIImage中还是在像Cocos2d这样的OpenGL框架中,当你加载一个图像时,它占用的内存量是每个像素的宽x高x字节。因此,2048x2048 png图像占用内存中的2048x2048x4字节(12 MB)。

为了在这种情况下保持内存,我只需根据需要加载内容,并在不需要时立即卸载它们。现在的诀窍是找出加载的位置和时间,这样用户就不会看到口吃。 FUN!