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 でない場合、または必要な OpenGL 拡張機能が Swappy で利用できない場合は 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 は、前のフレームのバッファが GPU によって処理されるまで待機してから、実際に eglSwapBuffers を呼び出します。