新增影格使用速度函式

使用下列函式,即可針對以 OpenGL ES API 為基礎的轉譯引擎使用 Android Frame Pacing。

初始化並刪除

使用下列函式即可分別初始化並刪除 Android Frame Pacing 的例項:

一般來說,應該在引擎啟動順序期間盡早呼叫 SwappyGL_init(),並在退出遊戲時呼叫 SwappyGL_destroy()。不該在任何其他時間點再呼叫這些方法。

設定替換間隔和重新整理週期

使用下列函式來設定 Android Frame Pacing 的例項:

呼叫 SwappyGL_setSwapIntervalNS() 時,請傳遞影格應呈現的時間長度。在大部分情況下,您可以使用下列其中一個常數:SWAPPY_SWAP_60FPSSWAPPY_SWAP_30FPSSWAPPY_SWAP_20FPS

一般來說,您必須在呼叫 SwappyGL_init() 後直接呼叫這些方法。然而,在遊戲執行期間的其他時間點,您可能仍須呼叫這些方法。

設定 ANativeWindow

Swappy 需要處理 ANativeWindow 的控制代碼,才能執行 ANativeWindow 的特定作業,例如呼叫 ANativeWindow_setFrameRate()。在 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,因此建議您執行替代影格使用速度的策略。