2010-08-02 6 views
0

2D OpenGL ES iPhone 게임에서 간헐적 인 병목 현상이 나타납니다. 내가 상어 (Shark)에서 그것을 만들었을 때, 주목할만한 것이 없었다. 게임에서 배경은 전체 화면을 차지하며 화면 전체에서 계속 움직이는 약 7-8 개의 작은 스프라이트가 있습니다. 대부분의 경우 원활하게 실행되지만, 지금은 작은 프레임 더듬이가 생깁니다. 일정한 운동을하는 게임에 공통적 인 문제입니까?2D iPhone 게임 성능

또한 사이드 노트로 glClear (GL_COLOR_BUFFER_BIT)를 호출합니다. 각 프레임이 렌더링 된 후 이걸두고 간다면, 가끔 프레임이 건너 뛰기도하지만, glClear 콜을 놔두는 것보다는 빈도가 적습니다. 또한 모든 게임 스프라이트에 하나의 스프라이트 시트 텍스처를 사용하고 있습니다.

+0

glClear를 필요로하지 않는다고 생각하는 이유는 무엇입니까? 화면을 지우려면 다시 배경을 그려야합니다. – Ricket

+0

추가 조사를 한 후, glClear를 iphone 하드웨어에 남겨 두는 것이 실제로 작은 성능 저하를 일으킬 수 있다는 것을 알았습니다. 이것은 아마도 다른 장치에서는 그렇지 않습니다. – Scott

답변

1

어떻게 화면을 새로 고칩니다. 디스플레이 새로 고침 빈도와 정확히 일치하지 않을 수도 있습니다. 아직 읽지 않은 경우 CADisplayLink을 사용하여 디스플레이의 새로 고침과 일치하는 것이 좋습니다. 애플의 최신 OpenGL ES 템플릿은이를 수행하는 방법을 보여줍니다.

+0

아마도 디스플레이 새로 고침 빈도와 동기화되지 않았습니다. 내가 전화를했다 [NSTimer scheduledTimerWithTimeInterval : 1.0/60.0 target : 셀렉터 : @selector (mainGameLoop) userInfo : nil repeats : NO]; 그리고 나서 내 mainGameLoop 함수의 끝에서 동일한 호출을했다. (따라서 내 루프가 약간 지연되고 CPU 리소스를 예약했다.) CADisplayLink는 유망 해 보입니다. 나는 오늘 밤 이것을 구현하려고 노력할 것이다. – Scott