프레임 속도 함수 추가

OpenGL ES API를 기반으로 한 렌더링 엔진에서 Android Frame Pacing을 사용하려면 다음 함수를 사용합니다.

초기화 및 소멸

Android Frame Pacing 인스턴스를 초기화 및 소멸하려면 각각 다음 함수를 사용합니다.

일반적으로 엔진 시작 시퀀스 중에는 최대한 빨리 SwappyGL_init()를 호출해야 하며 게임 종료 시에는 SwappyGL_destroy()를 호출해야 합니다. 다른 때에는 이러한 메서드를 호출할 필요가 없습니다.

스왑 간격 및 새로고침 기간 구성

Android Frame Pacing 인스턴스를 구성하려면 다음 함수를 사용합니다.

SwappyGL_setSwapIntervalNS() 호출 시 프레임이 표시되어야 하는 기간을 전달합니다. 대부분의 경우 SWAPPY_SWAP_60FPS, SWAPPY_SWAP_30FPS 또는 SWAPPY_SWAP_20FPS 상수 중 하나를 사용할 수 있습니다.

일반적으로 SwappyGL_init()를 호출한 직후에 이러한 메서드를 호출해야 합니다. 그러나 게임을 실행하는 동안 다른 시점에 이러한 메서드를 호출해야 할 수도 있습니다.

ANativeWindow 설정

ANativeWindow_setFrameRate() 호출과 같은 ANativeWindow 관련 작업을 실행하기 위해서는 Swappy에 ANativeWindow 핸들이 필요합니다. Android 디스플레이 노출 영역이 변경되고 새로운 ANativeWindow 핸들이 있는 경우 SwappyGL_setWindow()를 호출합니다(예를 보려면 Bouncyball 샘플 참고).

자동 모드

Android Frame Pacing은 이전 프레임의 평균 기간을 기반으로 스왑 기간 및 파이프라인 모드를 조정합니다. 다음 함수를 사용하여 이 동작을 제어할 수 있습니다.

프레임당 스왑 실행

각 렌더링 프레임 중에 bool SwappyGL_swap(EGLDisplay display, EGLSurface surface)을 호출합니다. 이 메서드는 Open GL ES의 eglSwapBuffers() 메서드를 래핑하므로 게임의 모든 eglSwapBuffers() 인스턴스를 SwappyGL_swap()으로 대체해야 합니다.

유틸리티 함수

다음 메서드는 Android Frame Pacing이 사용 설정되었는지 확인합니다.

다음과 같은 이유로 Android Frame Pacing 인스턴스가 자체적으로 초기화되지 않을 수 있습니다.

  • 기기에 필요한 EGL 함수가 없습니다.
  • 시스템에서 swappy.disable 속성을 설정했습니다.

이러한 상황 중 하나에서 SwappyGL_isEnabled()false를 반환하므로 대체 프레임 속도 전략을 구현하는 것이 가장 좋습니다.