2011-12-27 2 views

답변

4

일반적으로 Apple에서 권장하는 CADisplayLink 방법을 사용하여 앱을 그리는 경우 새로 고침 빈도를 제어 할 수 없습니다. 그러나 frameInterval 속성을 1보다 큰 값으로 설정하여 드로잉 프레임을 건너 뛰고 프레임 속도를 낮출 수 있습니다. 예를 들어, frameInterval = 2는 60fps 대신 약 30fps를 제공해야합니다.

일부 응용 프로그램을 다른 스레드에 배치하거나 프레임 속도를 잘라내는 것보다 도면 작업을 최적화하는 것이 더 유용 할 수 있습니다.

4

함수에서 "내 FPS 속도 제한"이라는 용어를 얻지 못했습니다. 하지만 당신의 OpenGL 응용 프로그램을 부드럽게 실행하려면 60까지 (iOS 5)의 FPS가 있어야하며 더 나은 성능을 위해 FPS를 유지해야합니다 (귀하의 경우에는 한계가 있다고 생각합니다). 첫째 엑스 코드 4에 도입, OpenGL을 ES의 성능 형사 빠르게하는 데 도움이 -

가 가 이 는 OpenGL ES는 성능 형사

다음은 OpenGL ES Programming Guide for iOS에 설명 된대로

엑스 코드, 당신은 당신의 OpenGL ES 응용 프로그램을 분석하고 조정하기 위해 다양한 도구를 제공합니다 OpenGL ES가 응용 프로그램의 주요 병목 지점인지 확인하십시오. OpenGL ES 코드를 테스트하기 위해 실행하는 첫 번째 도구 여야합니다. 의 주요 장점 OpenGL ES 성능 형사는 이 OpenGL ES 성능을 가장 느리게하는 응용 프로그램의 중요한 위치에 을 자동으로 지시 할 수 있다는 것입니다. OpenGL ES 성능 탐정을 사용하려면 툴을 실행하고 개발 시스템에 연결된 iOS 기반 장치 에서 응용 프로그램을 선택하여 사용하십시오. 응용 프로그램이 응용 프로그램에서 관심있는 의 위치에 도달하면 [증거 수집] 단추를 클릭하십시오. OpenGL ES 성능 형사 기록 응용 프로그램이 연속 프레임을 통해 생성하는 OpenGL ES 명령을 사용하여 명령을 분석하여 키 병목을 발견하고 특정 성능 권장 사항을 제공합니다. OpenGL ES 성능 형사는 /Developer/Applications/Graphics Tools/디렉토리에서 찾을 수 있습니다.

장치 (OpenGL은 ES 분석) - 또한 엑스 코드 4 도입은,는 OpenGL ES 분석 도구를 사용하면 OpenGL을 ES의 응용 프로그램의 사용을 연구 수 있도록 기능을 제공합니다. OpenGL ES 분석 도구는 응용 프로그램에서 생성 한 OpenGL ES 명령을 기록하며 응용 프로그램이이 프로그래밍 가이드에서 설명한 모범 사례 을 따르지 않을 때 경고 메시지가 표시됩니다. 모범 사례를 따르기 위해 특정 변경을 권장합니다 ( ). OpenGL ES 분석 도구 을 사용하면 애니메이션의 각 프레임을 생성하는 데 사용되는 모든 명령을 볼 수 있습니다. 마지막으로, OpenGL ES 분석 도구를 사용하면 그래픽 파이프 라인 부분을 선택적으로 비활성화하여 파이프 라인 부분이 응용 프로그램의 중요한 병목 지점인지 여부를 확인할 수 있습니다. OpenGL ES 분석 도구는 응용 프로그램을 수동으로 분석하고 그 내부의 동작을 이해하는 데 유용한 도구 집합을 제공합니다. 그러나 응용 프로그램이 현재 병목 상태 인 위치에서 자동으로 알려주지는 않습니다. 예제의 경우, OpenGL ES 코딩 방법을 개선하는 방법에 대한 제안을 제시한다고해도 그 제안은 코드를 변경하면 응용 프로그램의 성능이 자동으로 향상 될 것입니다.

계측기 (OpenGL ES 드라이버) - OpenGL ES 드라이버 도구는 Xcode 3 이상에서 제공됩니다. 응용 프로그램에서 제출 한 OpenGL ES 명령을 직접 분석하지 않습니다.대신 에 그래픽 하드웨어 사용 방법에 대한 주요 통계를 모니터 할 수 있습니다. 예를 들어 텍스처 데이터를 저장하는 데 사용되는 바이트 수를 추적하고 해당 숫자가 프레임간에 에서 어떻게 변경되는지를 추적 할 수 있습니다.

+0

응용 프로그램은 픽셀 쉐이더를 많이 사용합니다. 3gs로 60fps에 도달하는 것은 불가능합니다. 나는 그것이 부드럽지 않을 것이라는 것을 안다. – user642252

+0

을 3gs (iOS4 사용)로 설정하면 더 나은 성능을 위해 30fps로 권장됩니다. 무거운 그래픽을 사용해 왔지만 어느 렌더링으로 FPS를 떨어 뜨릴 지 안내하는 도구를 사용할 수 있습니다. 나는 사람들이 악기를 사용하여 FPS 드롭의 정확한 문제를 발견하는 것을 보았습니다.이 도구는 문제가 발생한 정확한 코드로 안내합니다. –

4

이 답변을 얻었지만 다소 확장하고 싶습니다.

실제로 권장되는 방법은 기본 프레임 속도를 제한하기 위해 CADisplayLink와 frameInterval을 사용하는 것입니다. 하드웨어의 디스플레이 자체는 고정 재생 빈도를 가지며 CADisplayLink 메서드는 하드웨어 새로 고침을 우리의 그리기 메서드 호출과 동기화하여 그리기 메서드가 일할 가장 많은 시간.

CADisplayLink는 하드웨어로 생성되었으므로 시간 만 나누면됩니다. 즉, frameInterval이 수행해야 할 작업입니다.

frameInterval = 1 당신에게 60 FPS를 얻을 수

frameInterval = 2 30 FPS를 얻을 수

frameInterval = 3을

내가 예를 들어 메뉴에 대한 많은 frameInterval = 5를 사용하는 20 FPS를 얻을, 그것을 여전히 합리적인 단순 애니메이션의 경우 약 12fps를 제공하며 배터리 소모가 크게 줄어 듭니다.

나는 또한 평균 프레임 속도를 측정하고 게임 유체를 유지하는 데 도움이되는 frameInterval을 선택하여 동적 프레임 속도 변경을 사용했습니다.

FPS의 값이 매우 안정적이지 않아 일반적으로 불안정한 애니메이션이 발생합니다. 우리가 작업해야하는 시간 슬라이스는 1/60 초이므로 유체 애니메이션의 배수가 유동 애니메이션을 생성합니다. CADisplayLink를 사용하지 않고 완벽한 타이밍 라우팅으로 다른 것을 제공하더라도 하드웨어는 여전히 그 시간 조각으로 그려집니다.