0

我要解决的问题是:

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

OpenGL分析: OpenGL分析

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

我担心的是两种分析中的大量内存警告(分别为 24 和 5)。

编辑:您可以在下面找到解释解决方案的评论

4

3 回答 3

1

2048x2048 是新设备纹理的最大可能尺寸。您可以在Apple OpenGL ES Programming Guide中了解它

于 2012-06-14T23:28:00.810 回答
1

请记住,Cocos2D 总是保存宽度/高度为 2 的幂的图像。因此,如果您的图像是 960x640 像素,它将像图像是 1024x1024 像素一样使用内存。

还要删除不再需要的纹理(以及调用内存不足时)。

[[CCTextureCache sharedTextureCache] removeUnusedTextures];

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

[CCTexture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA4444];

每当您需要加载更高质量的图像或渐变时,您都可以将其放回原处。

[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
于 2012-06-15T13:07:52.183 回答
0

在 LearnCocos2d 对我的问题的评论建议之后,正确的答案解决方案是简单地重新启动设备..(见他上面的评论)。

谢谢!

于 2012-06-18T08:58:27.383 回答