Gunakan fungsi berikut untuk menggunakan Android Frame Pacing dengan mesin rendering berdasarkan OpenGL ES API.
Menginisialisasi dan memusnahkan
Gunakan fungsi berikut untuk menginisialisasi dan menghancurkan instance Kecepatan Frame Android:
Secara umum, Anda harus memanggil SwappyGL_init()
sedini mungkin selama
urutan pengaktifan mesin, dan Anda harus memanggil SwappyGL_destroy()
saat game
ditutup. Anda tidak perlu memanggil metode ini di lain waktu.
Mengonfigurasikan interval pertukaran dan periode refresh
Gunakan fungsi berikut untuk mengonfigurasi instance Android Frame Pacing:
void SwappyGL_setSwapIntervalNS(uint64_t swap_ns);
void SwappyGL_setFenceTimeoutNS(uint64_t fence_timeout_ns);
void SwappyGL_setUseAffinity(bool tf);
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:
void SwappyGL_setAutoSwapInterval(bool enabled);
void SwappyGL_setMaxAutoSwapIntervalNS(uint64_t max_swap_ns);
void SwappyGL_setAutoPipelineMode(bool enabled);
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.