Cocos2d和iPhone:视差背景多纹理地图集提供了许多内存警告

我想解决的问题是:

我有6个条纹,我需要以不同的速度移动。 2048 * 2048的纹理表单是不够的,为了解决这个问题,我把图像分成两部分(上半部分和下半部分),所以每个条纹正好是960 * 640像素。 一般的algorithm是为每个条纹分配一个上下半部分,并在每一帧中移动它们,确保在退出用户视图时将它们重新放置在屏幕的顶部。 在本书的ShootEmUp示例中,我的类实现是对ParallaxBackground的直接修改, 在使用仪器运行和分析时给出了太多的内存警告。 请看下面的分析:

OpenGL分析: OpenGL分析

活动监视器: 活动监视器分析

令我担心的是在这两个分析中都有大量的内存警告(分别是24和5)。

编辑:下面你可以find解释解释的评论

2048×2048是新设备最大可能的纹理尺寸。 您可以在Apple OpenGL ES编程指南中了解它

请记住,Cocos2D总是保存宽度/高度为2的图像。因此,如果您的图像是960×640像素,它将使用内存,就好像图像是1024×1024像素。

也删除你不再需要的纹理(当内存被调用时)。

[[CCTextureCache sharedTextureCache] removeUnusedTextures]; 

您也可以使用较低质量的图像来节省内存。

 [CCTexture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA4444]; 

每当你需要加载更高质量的图像或渐变,你可以把它放回去。

 [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; 

遵循LearnCocos2d对我的问题的评论build议,正确的答案是解决方法是简单地重新启动设备。(请参阅上面的注释)。

谢谢!