如何在cocos2d中快速绘制背景?

gra*_*ukt 10 iphone performance objective-c cocos2d-iphone ipad

我正在使用cocos2d在我的iPad上玩一个小游戏,我遇到了一些性能上的担忧.我将512x512图像平铺为背景.这给了我大约40fps的20个精灵(在a CCSpriteBatchNode),背景的代码是这样的:

CCSprite *background;
background = [CCSprite spriteWithFile:@"oak.png" rect : CGRectMake(0,
                                                                   0,
                                                                   size.width,
                                                                   size.height)];
background.position =  ccp( size.width /2 , size.height/2 );

ccTexParams params = {GL_LINEAR,GL_LINEAR,GL_REPEAT,GL_REPEAT};
[background.texture setTexParameters: &params];
Run Code Online (Sandbox Code Playgroud)

如果我删除背景,我得到一个坚实的60fps.

我已经尝试将图像转换为PVRTC,这确实提供了额外的fps或两个.我使用1024x768图像而不是平铺版本获得相同的帧速率.

由于我的背景将保持轴对齐,未缩放且通常是静态的.我认为应该有一种更快的方式来绘制它而不是像常规一样CCSprite

替代文字

gra*_*ukt 6

结果cocos2d以神秘的方式移动.将背景添加到其他空包装CCSprite会使帧速率恢复到60:

CCSprite *spback = [(CCSprite*)[CCSprite alloc] init];
[self addChild:spback];

CCSprite *sp = [CCSprite spriteWithFile:@"Background.png"];
sp.position = ccp(1024/2, 768/2);
[spback addChild:sp];
Run Code Online (Sandbox Code Playgroud)

在cocos2d论坛上有关于yaoligang的信用.

  • 不要忘记自动释放包装精灵. (3认同)