Saya mengerjakan game yang tidak bisa berjalan dengan kecepatan penuh pada beberapa perangkat. Pada Tegra2, dengan banyak optimasi, kinerjanya mendekati 40 fps. Framerate stabil tetapi animasi tidak cukup mulus, jadi saya butuh vsync.
Dengan 2.3 Android SDK, kita dapat menggunakan pustaka EGL secara asli. Jadi saya mencoba menggunakan eglSwapInterval tetapi tidak berhasil. Dalam makalah GDC ini , tampaknya Tegra2 dapat melakukannya.
Ps: Thread.sleep () untuk memaksa FPS konstan bukanlah solusi yang dapat diterima
Jawaban:
Menurut utas ini pada beberapa benchmark operasi, sebagian besar driver perangkat mengabaikan eglSwapInterval, tetapi tegra2 harus mengaktifkan vsync secara default (dan eglSwapInterval dapat digunakan untuk menonaktifkannya).
Mungkin tingkat vsync pada perangkat Anda sedemikian rupa sehingga gagap Anda berasal dari kadang-kadang memukul, kadang-kadang melewatkan waktu bingkai? Sudahkah Anda mencoba jika menonaktifkan vsync akan benar-benar memperbaiki masalah?
sumber
Menerbitkan sampel yang melakukan 30FPS menggunakan koreografer API. https://github.com/googlesamples/android-ndk/tree/master/choreographer-30fps Apakah itu cocok untuk Anda?
sumber