2017-01-01 11 views
0

cocos2dx를 사용하여 오래된 게임을 재생하려고합니다. 내가 해왔 던 것은 레거시 이진 파일을 읽고 비트 맵 파일을 추출하는 것이었고, 그 안에 68k 비트 맵 파일이 있습니다. 이제는 이미 파일을 읽고, 바이트를 압축하고, 비트 맵을 RGB8에서 RGBA8888로 변환 한 다음 비트 맵을 텍스처로 생성하고 스프라이트를 생성합니다. 그러나 등각 투상 게임 이었기 때문에지도가 있고 많은 타일로 이루어져 있습니다. 따라서 서로 다른 텍스처 (개별 텍스처로 각 비트 맵)로지도를 그리는 데 많은 비용이 듭니다. 내가 한 일은 텍스처를 재사용하고 로컬 zorder로 그룹화하여 자동 일괄 처리를 사용하려고하는 것입니다.cocos2dx에서 비트 맵 텍스처 렌더링 성능을 향상시키는 방법

캐릭터 애니메이션의 경우 이제 127 개의 개별 비트 맵 텍스처를 만들고 하나씩 차례로 스프라이트 프레임을 만들려고합니다.

는 GL 무승부 호출이 800에서 50로 감소하지만 FPS 여전히 너무 느립니다 unluckyly 작품의 모든 후 (10 ~ 20로 떨어지고는 60이어야 함)

시험은 아이폰에서 실행된다 시뮬레이터는 GPU가 없지만 일반 FPS입니까? (거의 13k gl verts 포함)

그리고 FPS는 내 캐릭터 애니메이션의 텍스처 수에 영향을 받습니까?

런타임에 텍스처를 포장해야합니까? 예 : 텍스처를 결합하여 런타임시 메모리에서 더 큰 텍스처를 만들고 오프셋으로로드합니다.

+0

gl 호출이 실제로 무엇을 의미합니까? FPS에 어떤 영향을 미쳤습니까? 매 프레임마다 glTexImage2D()를 호출합니까? – Sung

+0

그것은 cocos2dx에 의한 디버그 메시지입니다. 그래서 gl 그리기 호출을 이해해야합니까? 그리고 fps는 gl 그리기 호출과 관련이 있어야합니까? 그리고 나는 실제로 OpenGL 호출을 직접 사용하지 않았고, 그렇게하기 위해 cocos2dx 엔진에 모든 것을 남겼습니다. 그래서 당신은 내가 cocos2dx를 사용하는 대신에 opengl 루틴으로 들어가야한다고 제안합니까? –

+0

실제로 병목 현상이 무엇인지 알고 있습니까? 무승부 콜과 13K 버트는 아무 것도 아니므로 OpenGL 레이어가 실제로 문제가되는 것처럼 들리지는 않습니다. 신청서를 프로파일 링 해 보셨습니까? 어떤 장치 GPU를 사용하고 있습니까? – solidpixel

답변

1

시뮬레이터에서 성능을 확인하지 마십시오. 그것은 완전히 무의미하고 비표 대표입니다.

다른 모든 병목 현상이없는 한 현재 iOS 장치는 50 회의 그리기 호출과 13k 개의 verts를 처리 할 것입니다 (장치에서 실행하면 알 수 있음). 그러면 60fps로 실행됩니다. .