2012-08-23 7 views
0

2D 타일 기반 게임을 개발 중이며 현재 iPad 3에서 실행 중일 때도 성능상의 문제로 어려움을 겪고 있습니다. OpenGL ES 프레임 캡처를 사용하면 glDrawElements 프레임 당 689 회! 그게 많이 있니? 낮은 성능의 경우가 될 수 있습니까?glDrawElements가 너무 많아 fps가 낮습니다. OpenGL ES1.1 (iPhone)

하나의 거대한 배열에 모든 것을 쌓고 1 회의 무승부를 수행해야합니까? 어떤 변화가있을 것인가?

+1

와우 ... 689 glDrawElements, 모든 바인딩 버퍼 및 생성 오버 헤드를 추가? – TheAmateurProgrammer

답변

3

OpenGL 성능 형사 (xcode (오른쪽 클릭, 오픈 개발자 도구) 아래에서 환경 설정을 통해 다운로드해야 할 수도 있음)를 실행하는 경우 현재는 귀하의 명령 문제 (가정)로 인해 제한됩니다.

당신의 목표는 하루의 끝에 채우기 속도에 의해 제한 될 것입니다, 여기 당신이 거기에 도착하는 데 도움이되는 몇 가지 팁입니다

정렬 모든 그리기 깊이 혼합 모드 텍스처 ID로 스프라이트

일단 정렬되면 모든 스프라이트를 하나의 버텍스 버퍼 객체와 인덱스 버퍼 객체로 묶습니다.

드로잉 깊이, 블렌드 모드 또는 텍스처 ID가 변경되면 새로운 그리기 호출을 만들어 해당 리소스를 바인딩해야합니다.

또한 스프라이트가 CPU 측 (pos x mvp)에서 꼭지점을 평평하게해야하며 매트릭스와 색상과 같은 다른 속성을 보내지 말아야하며 꼭지점의 일부 여야합니다.

전형적인 정점

{ 
    float pos[3] 
    int color 
    float uv[2] 
} 
+0

입력 해 주셔서 감사합니다 :-). – Gamer

관련 문제