2009-07-26 2 views
1

Я использую cocos2d для iphone, и в своей игре я использую спрайт как статическое фоновое изображение.Sprite backgrounds

Я заметил, что при удалении кода для добавления спрайта частота кадров идет от ~ 30 кадров в секунду до более чем 40 кадров в секунду. Есть ли другой способ показать статический фон, который дешевле? Я вообще не перемещаю фоновый спрайт.

Чтобы закодировать прямо сейчас:

background = [Sprite spriteWithFile:@"t1_5.jpg"]; 
[self addChild:background z:0]; 
background.position = ccp(240, 160); 
+0

Позволяет ли cocos2d использовать сжатые текстуры (pvrtc)? Если это так, пойдите по этому маршруту. Пропускная способность памяти - огромная проблема и, как правило, узкое место. – Till

ответ

1

не простой вопрос, как каждый вопрос, который касается производительности cocos2d. Большие изображения всегда обрабатывают CPU. Вы можете только уменьшить его, чтобы обеспечить приемлемую производительность (стабильный 30 fps - хороший результат)

Есть pretty good advices от разработчика.

Из своего собственного опыта я предпочитаю использовать цветной фон с небольшими спрайтами, используя сплошной фон изображения. Повторяющиеся элементы также должны быть use single texture с различными спрайтами.

Уменьшение качества текстуры до 16 бит также может помочь.

[Texture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA4444]; // add this line at the very beginning 

Я могу быть более конкретным по теме, если вы предоставили больше информации, например, о прикреплении фона.

+0

Я думаю, вы дали хорошие примеры для оптимизации там, которые могут быть полезны для многих других. И я думаю, что вопрос для моего вопроса - нет. Нет волшебного способа определения растрового изображения в качестве фона, в котором практически отсутствуют ресурсы. –

0

Я рекомендую преобразовать все ваши спрайты в AtlasSprite. Таким образом, у вас есть AtlasSpriteManager, который загружает фоновый файл один раз, и когда вам нужны сами спрайты, это просто обрезает изображение. AtlasSprite обычно быстрее, чем предыдущий материал Sprite.