Как быстро нарисовать фон в cocos2d? - PullRequest
10 голосов
/ 10 октября 2010

Я играю с маленькой игрой на своем iPad, используя cocos2d, и столкнулся с некоторыми проблемами с производительностью.У меня есть фоновое изображение размером 512x512.Это дает мне около 40 кадров в секунду с 20 спрайтами (в 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];

Если я удаляю фон, я получаю твердые 60 кадров в секунду.

Я попытался преобразовать изображение в PVRTC, и это дало дополнительный кадр или два.Я получаю идентичные частоты кадров, используя изображение 1024x768 вместо мозаичной версии.

Поскольку мой фон останется выровненным по оси, немасштабированным и в целом статичным.Я полагаю, что должен быть более быстрый способ нарисовать его, чем обычный CCSprite?

alt text

Ответы [ 3 ]

6 голосов
/ 25 октября 2010

Оказывает, что 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 на форумах cocos2d.

0 голосов
/ 20 октября 2010

Я попробовал это сам с фоном 1024x768 и получил около 60 кадров в секунду даже в отладке с iPad.Возможно, убедитесь, что ваше изображение не имеет дополнительных каналов или альфа-канала?

0 голосов
/ 18 октября 2010

Прежде всего, вы запускаете это на своем iPad или симуляторе?Там обычно большая разница в производительности.Посмотрев форумы, где у людей возникают похожие проблемы, я бы попытался разделить все изображение размером 1024x768 на 2 изображения размером 512x768.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...