Estoy jugando con un pequeño juego en mi iPad usando Cocos2d y me he encontrado con algunas preocupaciones de rendimiento. Tengo una imagen de 512x512 como fondo. Eso me da alrededor de 40fps con 20 sprites (en un CCSpriteBatchNode
), el código para el fondo es esto:Cómo dibujar un fondo rápido en cocos2d?
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: ¶ms];
Si quito el fondo llegue a 60 fps sólidos.
He intentado convertir la imagen a PVRTC y eso dio un fps extra o dos. Obtengo tasas de fotogramas idénticas usando una imagen de 1024x768 en lugar de la versión en mosaico.
Dado que mi fondo permanecerá alineado al eje, sin escala y generalmente estático. Me imagino que debería haber una manera más rápida de dibujarlo que tenerlo como un CCSprite
normal?
No te olvides de liberar automáticamente el sprite de envoltura. –
Mala práctica para los tamaños de código duro, debe usar [[sprite texture] contentSize] – haawa