CCSpriteBatchNode с большими прозрачными фонами (cocos2d) - PullRequest
0 голосов
/ 28 ноября 2011

Я написал несколько классов для создания фона с эффектом параллакса, который содержит землю, холмы и облака. Каждый объект дублируется один раз, и это позволяет мне создавать бесконечный цикл с землей и т. Д. Проблема заключается в использовании CCSpriteBatchNode и 12 x PNG 32-битных текстур с прибл. размер 600px на 200px замедляет мой FPS с 60 до 30. Я читал, что использование CCSpriteBatchNode показывает большие улучшения в производительности, но я не могу их воспроизвести.

http://www.learn -cocos2d.com / 2011/09 / cocos2d-SpriteBatch эффективность-тест /

Как мне ускорить процесс?

EDIT: Запуск его на моем iPhone дает мне 60 FPS, но он показывает 30 FPS в симуляторе: S

Вот код, если он помогает, в этом нет ничего синтаксически неправильного:

batch = [CCSpriteBatchNode batchNodeWithFile:@"parallax.png"];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"parallax.plist"];
[self addChild:batch];

float screenHeight = [CCUtil screenSize].height;
float screenWidth = [CCUtil screenSize].width;

CCSprite *sky = [CCSprite spriteWithSpriteFrameName:@"sky.png"];
sky.anchorPoint = ccp(0,0);
[batch addChild:sky];

CGPoint speedCloudSlow = ccp(0.08f, 0.002f);
CGPoint speedCloudFast = ccp(0.15f, 0.006f);

CCSprite *clouds1 = [CCSprite spriteWithSpriteFrameName:@"clouds1.png"];
CCSprite *clouds2 = [CCSprite spriteWithSpriteFrameName:@"clouds2.png"];
CCSprite *clouds3 = [CCSprite spriteWithSpriteFrameName:@"clouds3.png"];
CCSprite *clouds4 = [CCSprite spriteWithSpriteFrameName:@"clouds4.png"];
[batch addChild:clouds1];
[batch addChild:clouds2];
[batch addChild:clouds3];
[batch addChild:clouds4];

CCSprite *land1 = [CCSprite spriteWithSpriteFrameName:@"land.png"];
CCSprite *land2 = [CCSprite spriteWithSpriteFrameName:@"land.png"];
CCSprite *landBrown1 = [CCSprite spriteWithSpriteFrameName:@"land_brown.png"];
CCSprite *landBrown2 = [CCSprite spriteWithSpriteFrameName:@"land_brown.png"];
CCSprite *landDark1 = [CCSprite spriteWithSpriteFrameName:@"land_dark.png"];
CCSprite *landDark2 = [CCSprite spriteWithSpriteFrameName:@"land_dark.png"];
CCSprite *ground1 = [CCSprite spriteWithSpriteFrameName:@"ground.png"];
CCSprite *ground2 = [CCSprite spriteWithSpriteFrameName:@"ground.png"];

[batch addChild:land1];
[batch addChild:land2];
[batch addChild:landBrown1];
[batch addChild:landBrown2];
[batch addChild:landDark1];
[batch addChild:landDark2];
[batch addChild:ground1];
[batch addChild:ground2];

1 Ответ

4 голосов
/ 29 ноября 2011

Запуск его на моем iPhone дает мне 60 FPS

Отлично, так что у вас на самом деле нет проблем!

FYI, независимо от частоты кадров, которую вы видите наСимулятор, вы не должны беспокоиться об этом.Нет смысла тратить время на размышления о производительности симулятора.Он не имеет значения, его нельзя сравнивать и не имеет никакого значения для реальной производительности вашего приложения.

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