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

标签 iphone objective-c performance ipad cocos2d-iphone

我正在使用 cocos2d 在我的 iPad 上玩一个小游戏,我遇到了一些性能问题。我有一个 512x512 的图像平铺作为我的背景。这给了我大约 40fps 和 20 个 Sprite (在 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];

如果我删除背景,我将获得稳定的 60fps。

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

因为我的背景将保持轴对齐、未缩放且通常是静态的。我认为应该有一种比将其作为常规 CCSprite 更快的绘制方法?

alt text

最佳答案

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

为此致谢 yaoligang on the cocos2d forums.

关于iphone - 如何在cocos2d中快速绘制背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3899903/

相关文章:

javascript - 在 CodeIgniter 中将 javascript 移动到底部的策略?

iphone - iPhone 上 NSString 到 64 位整数的转换

iphone - 如何在 iphone 应用程序启动时打开不同的 View Controller ?

iphone - 从自定义表格 View 单元格发送重新加载数据?

ios - 合成目的

xcode - 如何测量在函数中花费的总时间?

iphone - UIImagePickerController 在快速滚动时崩溃,比照片应用程序慢

iphone - 如何使用 iOS 可达性

ios - AFNetworking 中的响应 header 和 URL

javascript - 多个特定目的的设置间隔或单个 super 间隔