2011-09-12 2 views
3

내 게임에서 2048x2048 크기의 스프라이트 시트 (6-7) 1024x1024 및 일부 512x512입니다.Cocos2d Game.Suggestion에서 더 많은 PNG를로드 할 때 문제가 발생했습니다. "PNG to Pvr.ccz"변환이 필요합니다.

이제 막대한 메모리 경고에 직면하고 있습니다. 내 게임 :(에서 스프라이트 시트의 수를 줄일 수있는 방법이 없습니다.

그래서, 형식을 pvr.ccz하는 PNG로에서 모든 최대 2048x2048 스프라이트 시트를 변환하는 생각을 해요.

는 그인가 최적의 솔루션 또는 다른 어떤 것은 내가 완전히 누락 된,이? 어떤 도움은 매우 극명하게 될 것이다

.

+0

그냥 SpriteSheet에 13-15 개의 .png 파일이있는 6-7 개의 SpriteSheet가 있습니까? 추가적인 6-7 SpriteSheets. – Michael

+0

@Michael : 아니요. 실제로 실제로 2048x2048의 6-7 스프라이트 시트에 200-240 개의 애니메이션 프레임이 있습니다. 또한 스프라이트 시트의 수가 1024x1024이고 애니메이션 프레임도 첫 번째 프레임과 같습니다. – aToz

답변

1

모든 PNG/텍스처 이미지 하면 각 프레임에 사용할 수을 가지고, 그 다음 e ach는 텍스처 메모리와 비 압축 메모리에 저장되므로 메모리 문제가 발생합니다. GPU (내 지식)는 압축 된 PNG (또는 JPG) 이미지에서 직접 렌더링 할 수 없습니다.

유일한 옵션은 4444 색상으로 떨어 뜨리거나 PVRTC (아마도 4bpp)를 사용하는 것입니다. [업데이트 : WRT PVRTC,이게 iphone 게임이라고 가정합니다.]

+0

답장을 보내 주셔서 감사합니다. RBBA4444 값을 설정 한 후에도 게임을 확인한 후에도 메모리 경고가 계속 표시되고 충돌이 발생해도 모든 png가 png 인덱스 색상 모드 압축으로 압축되어서 그것과 함께 갈 수 있지만, 예술의 일부가 매우 이상하게 보입니다. (..하지만 충돌 문제가 해결되었습니다.) – aToz

+0

PNG에 사용하는 압축 방법은 관련이 없습니다. API가 압축을 풀어야합니다 (8888로) GPU가 액세스 할 수있는 메모리에 저장되기 전에 GPU가 지원하는 텍스처 압축 방법 **을 사용해야합니다.이 경우 GPU는 4bpp 또는 2bpp에서 PVRTC를 의미합니다 (자연 스럽지만/3D 텍스처) ** 텍스처 압축은 거의 항상 고정 된 비율의 인코딩을 사용하며 (PNG 또는 JPEG와 달리 다양 함) 큰 섹터를 압축 해제하지 않고 텍스처 데이터에 임의 접근을 허용합니다 텍스처의 ns (PNG 또는 JPG와 달리). –