2010-10-10 12 views
10

Cocos2d'yi kullanarak iPad'imde küçük bir oyun oynuyor ve bazı performans kaygılarıyla karşılaşıyorum. Arka plan olarak döşenen 512x512 boyutunda bir resmim var. Yani, arka plan için kod şudur: (a CCSpriteBatchNode olarak) 20 sprite ile 40fps etrafında bana verir:Cocos2d'de arka plan nasıl hızlı çizilir?

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

Ben arka planı kaldırırsanız ben sağlam 60fps olsun.

Görüntüyü PVRTC'ye dönüştürmeyi denedim ve bu da fazladan bir fps veya iki tane vermeyi denedim. Döşenmiş versiyon yerine 1024x768 görüntü kullanarak aynı çerçeveler elde ediyorum.

Arka planım eksen hizalanmış, ölçeklenmemiş ve genellikle statik kalacak. Çizimde bulmanın daha hızlı bir yolu olmalı diye düşünmek zorundayım CCSprite? Her şeyden

alt text

cevap

6

Cocos2d, gizemli yollarla hareket eder. CCSprite sarma aksi takdirde boş arka planı ekleme geri 60'a kadar kare hızını alır:

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

Kredi bunun gerçek donanım üzerinde yaoligang on the cocos2d forums.

+3

Sarma harmanını otomatik olarak eklemeyi unutmayın. –

+0

Sert kod boyutlarına kötü alıştırma yapmak için [[sprite texture] contentSize] kullanmalısınız – haawa

0

Öncelikle, iPad veya simülatörde bu koşuyoruz? Genellikle orada büyük bir performans farkı vardır. İnsanların benzer problemlere sahip olduğu forumlara baktıktan sonra, 1024x768 boyutundaki görüntüyü 512x768 boyutunda 2 görüntüye ayırmayı deneyeceğim. Umarım yardımcı olur.

+0

bu tüm gider için. Ben aslında daha az sprite (kiremitli bir POT dokusu ile) daha hızlı olurdu izlenim altındaydı, ama ben bunu araştırırken, durum böyle değil. – grapefrukt

0

Kendimi bir 1024x768 arka planla denedim ve bir iPad ile hata ayıklamada bile 60 fps aldım. Belki de resminizin fazladan kanal veya alfa olmadığından emin olun.