2013-04-30 4 views
0

저는 Cocos2D 및 CocosBuilder를 처음 사용하며 메모리 사용에 관해 몇 가지 질문이 있습니다.Cocos2D/CocosBuilder 텍스처 아틀라스 메모리 사용량

1) CocosBuilder (또는 그 문제에 대한 Cocos2D)에서 같은 장면의 모든 CCSprite 객체에 대해 동일한 텍스처 아틀라스 (스프라이트 시트)를 사용하면 각 스프라이트에 대해 별도의 텍스처보다 메모리 사용량이 절약됩니까? 정확히 말하면 하나의 4k * 4k 텍스처를 사용하는 경우 게임에 하나의 텍스처 아틀라스 (예 : 4k * 4k * 32 비트)에 대한 메모리가 필요합니까?

2) 메모리를 절약하기 위해 다른 스프라이트에 다른 텍스처 모드를 사용할 수 있습니까? 예를 들어 배경 이미지에 알파가 아닌 모드를 사용합니다. 즉, Cocos2D는 동일한 장면에서 다른 텍스처 모드를 처리 할 수 ​​있습니까?

3) 한 장면에 약 100 개의 개체, 총 3 개의 장면으로 게임을 구현해야합니다. 지금은 같은 장면의 모든 개체가 동일한 스프라이트 시트를 사용하고 있습니다. 하지만 몇 차례 장면을 전환 한 후에도 게임이 중단됩니다. 매번 mem-warning 메시지가 나옵니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 나는 모든 캐시를 덤프하려했지만 여전히 충돌이 발생했습니다.

고맙습니다.

답변

1

1) 텍스쳐는 얼마나 많은 객체가 그려지 든 관계없이 한번만로드됩니다. 일반적으로 단일 텍스처를 사용하여 메모리를 많이 절약하지는 않지만 개별 이미지 파일 텍스처보다는 가능한 한 적은 텍스처 아트라스에서 드로잉하여 로딩 시간과 렌더링 성능을 향상시킵니다.

2) 예. 예를 들어, 동일한 장면에서 RGB565 (알파 없음), RGB5551 (bool 알파) 또는 RGBA4444/RGBA8888 텍스처를 사용할 수 있습니다.

3) 계측기를 사용하십시오. 누출이 있는지 확인하십시오. ARC를 사용하지 않는다면 이제 전환 할 시간입니다. 추신 : 캐시를 제거하지 마십시오. 결국 텍스처를 다시로드해야하기 때문에 시간과 메모리를 낭비하는 것입니다. 확실한 텍스쳐를 그 시점에서 사용하지 않고 아주 가까운 장래에 사용하지 않기를 원할 경우, 그 텍스쳐들과 그것들만을 캐쉬 해제하십시오.

+0

감사합니다. 그것은 많은 도움이됩니다. 우리 게임은 텍스처를 자주 재사용하지 않습니다. 그래서 저는 곧 쓸모없는 것들을 제거 할 수 있다고 생각합니다. – BiGGA