Cocos2d和iPhone:视差背景多纹理地图集提供了许多内存警告
我想解决的问题是:
我有6个条纹,我需要以不同的速度移动。 2048 * 2048的纹理表单是不够的,为了解决这个问题,我把图像分成两部分(上半部分和下半部分),所以每个条纹正好是960 * 640像素。 一般的algorithm是为每个条纹分配一个上下半部分,并在每一帧中移动它们,确保在退出用户视图时将它们重新放置在屏幕的顶部。 在本书的ShootEmUp示例中,我的类实现是对ParallaxBackground的直接修改, 在使用仪器运行和分析时给出了太多的内存警告。 请看下面的分析:
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议,正确的答案是解决方法是简单地重新启动设备。(请参阅上面的注释)。
谢谢!