Kare hızı işlevleri ekleyin

OpenGL ES API'ye dayalı bir oluşturma motoruyla Android Frame Pacing'i kullanmak için aşağıdaki işlevleri kullanın.

Başlatma ve yok etme

Android Frame Pacing'in bir örneğini sırasıyla başlatmak ve yok etmek için aşağıdaki işlevleri kullanın:

Genel olarak, motor çalıştırma sırası sırasında SwappyGL_init() işlevini mümkün olduğunca erken, oyun çıkış yaparken ise SwappyGL_destroy() işlevini çağırmalısınız. Bu yöntemleri başka bir zamanda çağırmanız gerekmez.

Değiştirme aralığını ve yenileme süresini yapılandırma

Android Frame Pacing örneğini yapılandırmak için aşağıdaki işlevleri kullanın:

SwappyGL_setSwapIntervalNS() işlevini çağırırken bir karenin gösterilmesi gereken süreyi iletin. Çoğu durumda şu sabitlerden 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 doğrudan ç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

Swappy, ANativeWindow ile ilgili işlemleri (ör. ANativeWindow_setFrameRate()'ı arama) gerçekleştirmek için ANativeWindow'ın kullanıcı adını kullanır. Android ekran yüzeyiniz değiştiğinde ve yeni bir ANativeWindow işleyiciniz olduğunda (örnek için Bouncyball örneğine bakın) Call SwappyGL_setWindow() işlevini çağırın.

Otomatik Modlar

Android Frame Pacing, önceki karelerin ortalama süresine göre takas süresini ve işlem hattı modunu ayarlar. Bu davranışı aşağıdaki işlevlerle kontrol edebilirsiniz:

Kare başına değiştirme işlemi gerçekleştirme

Her oluşturma karesi sırasında bool SwappyGL_swap(EGLDisplay display, EGLSurface surface) işlevini çağırı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ği, aşağıdaki nedenlerden biriyle kendisini başlatamayabilir:

  • Cihazda gerekli EGL işlevleri eksik.
  • Sistem, swappy.disable özelliğini ayarladı.

Bu durumlardan birinde SwappyGL_isEnabled(), false değerini döndürür ve alternatif bir kare hızını ayarlama stratejisi uygulamanız önerilir.