Android Frame Pacing'i OpenGL ES API'ye dayalı bir oluşturma motoruyla kullanmak için aşağıdaki işlevleri kullanın.
Başlat ve kaldır
Android Frame Pacing örneğini başlatmak ve kaldırmak için sırasıyla aşağıdaki işlevleri kullanın:
Genel olarak, motor başlatma sırası sırasında SwappyGL_init()
yöntemini ve oyundan çıkarken SwappyGL_destroy()
yöntemini çağırmalısınız. Bu yöntemleri başka bir zamanda çağırmanız gerekmez.
Değiştirme aralığını ve yenileme dönemini yapılandırma
Android Frame Pacing'in bir örneğini yapılandırmak için aşağıdaki işlevleri kullanın:
void SwappyGL_setSwapIntervalNS(uint64_t swap_ns);
void SwappyGL_setFenceTimeoutNS(uint64_t fence_timeout_ns);
void SwappyGL_setUseAffinity(bool tf);
SwappyGL_setSwapIntervalNS()
çağırırken karenin sunulması gereken süreyi geçirin. Çoğu durumda şu sabit değerlerden birini kullanabilirsiniz: SWAPPY_SWAP_60FPS
, SWAPPY_SWAP_30FPS
veya SWAPPY_SWAP_20FPS
.
Genel olarak, bu yöntemleri SwappyGL_init()
çağrısından hemen sonra çağırmanız gerekir. Ancak bu yöntemleri oyununuzun yürütülmesi sırasında
başka zamanlarda da çağırmanız gerekebilir.
ANativeWindow'u Ayarlama
Değişim işlemi, ANativeWindow_setFrameRate()
gibi ANativeWindow
ile ilgili bir işlem gerçekleştirebilmek için ANativeWindow
işleyicisine ihtiyaç duyar.
Android ekran yüzeyiniz değiştiğinde ve yeni bir ANativeWindow
herkese açık kullanıcı adınız olduğunda SwappyGL_setWindow()
kodunu çağırın (örnek için Bouncyball örneğine bakın).
Otomatik Modlar
Android Frame Pacing, değiştirme süresini ve ardışık düzen modunu önceki karelerin ortalama süresine göre ayarlar. Bu davranışı aşağıdaki işlevlerle kontrol edebilirsiniz:
void SwappyGL_setAutoSwapInterval(bool enabled);
void SwappyGL_setMaxAutoSwapIntervalNS(uint64_t max_swap_ns);
void SwappyGL_setAutoPipelineMode(bool enabled);
Kare başına değiştirme gerçekleştir
Her oluşturma çerçevesi sırasında bool SwappyGL_swap(EGLDisplay display, EGLSurface surface)
çağrısını yapın.
Bu yöntem, Open GL ES'deki eglSwapBuffers()
yöntemini sarmalar. Bu nedenle, oyununuzdaki tüm eglSwapBuffers()
örneklerini SwappyGL_swap()
ile değiştirmeniz gerekir.
Yardımcı işlevler
Aşağıdaki yöntem Android Frame Pacing'in etkin olup olmadığını kontrol eder:
Android Frame Pacing örneğinin aşağıdaki nedenlerden dolayı kendi kendini başlatamaması mümkündür:
- Cihazda gerekli EGL işlevleri eksik.
- Sistem,
swappy.disable
özelliğini ayarladı.
Bu durumlardan herhangi birinde SwappyGL_isEnabled()
, false
değerini döndürür ve alternatif bir kare hızı stratejisi uygulamanız sizin için en iyisidir.