2009-07-26 3 views
1

iphone에 cocos2d를 사용하고 게임에서 정적 배경 이미지로 스프라이트를 사용하고 있습니다.스프라이트 배경

스프라이트를 추가하기위한 코드를 제거 할 때 프레임 속도가 ~ 30fps에서 40fps 이상으로 증가한다는 것을 알았습니다. 덜 비싼 정적 배경을 보여주는 다른 방법일까요? 나는 백그라운드 스프라이트를 전혀 움직이지 않을 것이다.

지금 코드 :

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

cocos2d는 압축 된 텍스처 (pvrtc)를 사용할 수 있습니까? 그렇다면 해당 경로로 이동하십시오. 메모리 대역폭은 큰 문제이며 대개 병목 현상입니다. – Till

답변

1

하지 쉬운 질문을,적인 Cocos2D 성능에 관한 모든 질문처럼. 큰 이미지는 항상 CPU로 렌더링됩니다. 성능을 수용 할 수 있도록 줄이면됩니다 (안정적인 30fps가 좋은 결과입니다).

원래 개발자가 제시 한 pretty good advices입니다.

내 자신의 경험에서 솔리드 이미지 배경을 사용하는 것보다 작은 스프라이트로 채워진 배경을 사용하는 것을 선호합니다. 반복되는 요소는 다른 스프라이트가있는 use single texture이어야합니다.

질감 품질을 16 비트로 낮추면 도움이됩니다.

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

배경을 추가하는 것과 같은 추가 정보를 제공하면 주제에 대해보다 구체적으로 설명 할 수 있습니다.

+0

많은 다른 사람들에게 유용 할 수있는 최적화 사례를 제공했다고 생각합니다. 그리고 나는 나의 질문에 대한 anwer는 아니오라고 생각합니다. 거의 아무런 자원도 차지하지 않는 배경으로 비트 맵을 정의하는 마법 같은 방법은 없습니다. –

0

모든 스프라이트를 AtlasSprite로 변환하는 것이 좋습니다. 그렇게하면 백그라운드 파일을 한 번로드하는 AtlasSpriteManager가 있으며 스프라이트 자체가 필요할 때 이미지를 클리핑하는 것입니다. AtlasSprite는 일반적으로 Sprite보다 훨씬 빠릅니다.