开发者

How to draw a background fast in cocos2d?

I'm toying with a small game on my iPad using 开发者_开发技巧cocos2d and I've run into some performance worries. I have a 512x512 image tiled as my background. That gives me around 40fps with 20 sprites (in a CCSpriteBatchNode), the code for the background is this:

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];

If I remove the background I get a solid 60fps.

I've tried converting the image to PVRTC and that did give an extra fps or two. I get identical framerates using a 1024x768 image instead of the tiled version.

Since my background will remain axis aligned, unscaled and generally static. I figure there should be a faster way to draw it than having it as a regular CCSprite?

How to draw a background fast in cocos2d?


Turns out cocos2d moves in mysterious ways. Adding the background to an otherwise empty wrapping CCSprite gets the framerate back up to 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];

Credits for this goes to yaoligang on the cocos2d forums.


First of all, are you running this on your iPad or the simulator? There is usually a large performance difference there. After looking at forums where people have similar problems, I would try splitting the whole 1024x768 image into 2 images that are 512x768. Hope that helps.


I tried this myself with a 1024x768 background and get about 60fps even in debug with an iPad. Perhaps make sure your image doesn't have extra channels or alpha?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜