OpenGL용 Swappy

Swappy의 OpenGL 부분입니다.

요약

함수

SwappyGL_destroy()
void
리소스를 폐기하고 Swappy에서 생성한 모든 스레드를 중지합니다.
SwappyGL_getFenceTimeoutNS()
uint64_t
펜스 시간 제한 값(나노초)을 가져옵니다.
SwappyGL_getRefreshPeriodNanos()
uint64_t
새로고침 기간 값(나노초)을 가져옵니다.
SwappyGL_getSwapIntervalNS()
uint64_t
스왑 간격 값(나노초)을 가져옵니다.
SwappyGL_getUseAffinity()
bool
SwappyGL_init(JNIEnv *env, jobject jactivity)
bool
Swappy를 초기화하고 JNI를 통해 디스플레이 하위 시스템에서 필수 Android 매개변수를 가져옵니다.
SwappyGL_init_internal(JNIEnv *env, jobject jactivity)
bool
SwappyGL_isEnabled()
bool
Swappy가 성공적으로 초기화되었는지 확인합니다.
SwappyGL_setFenceTimeoutNS(uint64_t fence_timeout_ns)
void
드라이버에 결함이 있는 기기의 펜스 시간 제한 매개변수를 설정합니다.
SwappyGL_setSwapIntervalNS(uint64_t swap_ns)
void
스왑 간격을 재정의합니다.
SwappyGL_setUseAffinity(bool tf)
void
SwappyGL_setWindow(ANativeWindow *window)
bool
ANativeWindow_* API를 호출할 때 사용할 ANativeWindow를 Swappy에 알려줍니다.
SwappyGL_swap(EGLDisplay display, EGLSurface surface)
bool
eglSwapBuffers 호출을 이 함수로 대체합니다.

함수

SwappyGL_destroy

void SwappyGL_destroy()

리소스를 폐기하고 Swappy에서 생성한 모든 스레드를 중지합니다.

참고 항목: SwappyGL_init

SwappyGL_getFenceTimeoutNS

uint64_t SwappyGL_getFenceTimeoutNS()

펜스 시간 제한 값(나노초)을 가져옵니다.

SwappyGL_getRefreshPeriodNanos

uint64_t SwappyGL_getRefreshPeriodNanos()

새로고침 기간 값(나노초)을 가져옵니다.

SwappyGL_getSwapIntervalNS

uint64_t SwappyGL_getSwapIntervalNS()

스왑 간격 값(나노초)을 가져옵니다.

SwappyGL_getUseAffinity

bool SwappyGL_getUseAffinity()

SwappyGL_init

bool SwappyGL_init(
  JNIEnv *env,
  jobject jactivity
)

Swappy를 초기화하고 JNI를 통해 디스플레이 하위 시스템에서 필수 Android 매개변수를 가져옵니다.

참고 항목: SwappyGL_destroy

세부정보
매개변수
env
Swappy가 사용되는 JNI 환경
jactivity
Swappy가 사용되는 활동
반환
Swappy가 초기화에 실패하면 false를 반환합니다.

SwappyGL_init_internal

bool SwappyGL_init_internal(
  JNIEnv *env,
  jobject jactivity
)

SwappyGL_isEnabled

bool SwappyGL_isEnabled()

Swappy가 성공적으로 초기화되었는지 확인합니다.

세부정보
반환
swappy.disable 시스템 속성이 false가 아니거나 Swappy가 작동하는 데 필요한 OpenGL 확장을 사용할 수 없다면 false를 반환합니다.

SwappyGL_setFenceTimeoutNS

void SwappyGL_setFenceTimeoutNS(
  uint64_t fence_timeout_ns
)

드라이버에 결함이 있는 기기의 펜스 시간 제한 매개변수를 설정합니다.

기본값은 50,000,000ns(50ms)입니다.

SwappyGL_setSwapIntervalNS

void SwappyGL_setSwapIntervalNS(
  uint64_t swap_ns
)

스왑 간격을 재정의합니다.

기본적으로 Swappy는 실제 프레임 렌더링 시간에 따라 스왑 간격을 조정합니다.

앱이 Swappy에 의해 계산된 스왑 간격을 재정의하려는 경우 이 함수를 호출할 수 있습니다.

  • 이 호출로 Swappy의 프레임 타이밍이 일시적으로 재정의되지만 SwappyGL_setAutoSwapInterval(false)가 호출되지 않는 한, 타이밍은 계속해서 동적으로 업데이트되므로 스왑 간격이 변경될 수 있습니다.
  • 이 호출에 따라 실행할 최소 간격이 설정됩니다. 예를 들어 SwappyGL_setSwapIntervalNS(SWAPPY_SWAP_30FPS)는 자동 모드에서 빠른 스왑이 가능하다고 결정하더라도 Swappy가 더 빠르게 스왑하도록 허용하지 않습니다. 그러나 자동 모드가 사용 설정되어 있으면 더 느려질 수 있습니다.

세부정보
매개변수
swap_ns
새 스왑 간격 값(나노초)입니다.

SwappyGL_setUseAffinity

void SwappyGL_setUseAffinity(
  bool tf
)

SwappyGL_setWindow

bool SwappyGL_setWindow(
  ANativeWindow *window
)

ANativeWindow_* API를 호출할 때 사용할 ANativeWindow를 Swappy에 알려줍니다.

세부정보
매개변수
window
EGLSurface를 생성하는 데 사용된 ANativeWindow

SwappyGL_swap

bool SwappyGL_swap(
  EGLDisplay display,
  EGLSurface surface
)

eglSwapBuffers 호출을 이 함수로 대체합니다.

Swappy는 실제로 eglSwapBuffers를 호출하기 전에 이전 프레임의 버퍼를 GPU에서 처리할 때까지 기다립니다.