Menambahkan fungsi pengaturan kecepatan frame

Gunakan fungsi berikut untuk menggunakan Android Frame Pacing dengan mesin rendering berdasarkan OpenGL ES API.

Menginisialisasi dan memusnahkan

Gunakan fungsi berikut untuk menginisialisasi dan memusnahkan instance Android Frame Pacing, masing-masing:

Secara umum, Anda harus memanggil SwappyGL_init() sedini mungkin selama urutan pengaktifan mesin, dan Anda harus memanggil SwappyGL_destroy() saat game keluar. Anda tidak perlu memanggil metode ini di lain waktu.

Mengonfigurasikan interval pertukaran dan periode refresh

Gunakan fungsi berikut untuk mengonfigurasi instance Android Frame Pacing:

Saat memanggil SwappyGL_setSwapIntervalNS(), masukkan durasi penayangan frame. Pada umumnya, Anda dapat menggunakan salah satu konstanta berikut: SWAPPY_SWAP_60FPS, SWAPPY_SWAP_30FPS, atau SWAPPY_SWAP_20FPS.

Secara umum, Anda harus memanggil metode ini langsung setelah panggilan ke SwappyGL_init(). Namun, Anda mungkin juga perlu memanggil metode ini pada lain waktu selama eksekusi game.

Menyetel ANativeWindow

Swappy memerlukan handle ANativeWindow untuk melakukan operasi khusus ANativeWindow, seperti memanggil ANativeWindow_setFrameRate(). Panggil SwappyGL_setWindow() saat permukaan tampilan Android Anda berubah dan Anda memiliki handle ANativeWindow baru (lihat sampel Bouncyball untuk contoh).

Mode Otomatis

Android Frame Pacing menyesuaikan durasi pertukaran dan mode pipeline berdasarkan durasi rata-rata frame sebelumnya. Anda dapat mengontrol perilaku ini dengan fungsi berikut:

Melakukan pertukaran per frame

Dalam setiap proses rendering frame, panggil bool SwappyGL_swap(EGLDisplay display, EGLSurface surface). Metode ini menggabungkan metode eglSwapBuffers() dari Open GL ES, jadi Anda harus mengganti semua instance eglSwapBuffers() dalam game dengan SwappyGL_swap().

Fungsi utilitas

Metode berikut memeriksa apakah Android Frame Pacing diaktifkan:

Ada kemungkinan bahwa instance Android Frame Pacing tidak dapat melakukan inisialisasi sendiri karena salah satu alasan berikut:

  • Fungsi EGL yang diperlukan tidak ada di perangkat.
  • Sistem telah menyetel properti swappy.disable.

Dalam salah satu situasi tersebut, SwappyGL_isEnabled() menampilkan false, dan sebaiknya implementasikan strategi pengaturan kecepatan frame alternatif.