Kare hızı işlevleri ekleyin

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

Sırasıyla bir Android Frame Pacing örneğini başlatmak ve kaldırmak için aşağıdaki işlevleri kullanın:

Genel olarak, motor başlatma sırası sırasında SwappyGL_init() yöntemini, oyundan çıkılırken de 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

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

SwappyGL_setSwapIntervalNS() çağırırken bir karenin sunulması gereken süreyi geçirin. Çoğu durumda aşağıdaki 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

Swappy, ANativeWindow_setFrameRate() gibi ANativeWindow'ye özgü 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 tutamaca sahip olduğunuzda SwappyGL_setWindow() numarasını arayı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şlevleri kullanarak kontrol edebilirsiniz:

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

Her oluşturma karesinde bool SwappyGL_swap(EGLDisplay display, EGLSurface surface) çağrısı yapın. Bu yöntem, eglSwapBuffers() yöntemini Open GL ES'den 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 herhangi birinden dolayı kendini başlatamayabilir:

  • Gerekli EGL işlevleri cihazda yok.
  • Sistem, swappy.disable özelliğini ayarladı.

Her iki durumda da SwappyGL_isEnabled(), false değerini döndürür ve alternatif bir kare hızı stratejisi uygulamanız sizin için en iyisidir.