Cómo agregar funciones de ritmo de fotogramas

Emplea las siguientes funciones para usar Android Frame Pacing con un motor de renderización basado en la API de OpenGL ES.

Cómo inicializar y destruir

Usa las siguientes funciones para inicializar y destruir una instancia de Android Frame Pacing, respectivamente:

En general, debes llamar a SwappyGL_init() lo antes posible durante la secuencia de inicio del motor, y debes llamar a SwappyGL_destroy() cuando se cierre el juego. No debería ser necesario llamar a estos métodos en ningún otro momento.

Cómo configurar el intervalo de intercambio y el período de actualización

Usa las siguientes funciones para configurar una instancia de Android Frame Pacing:

Cuando llames a SwappyGL_setSwapIntervalNS(), pasa el tiempo durante el cual se debe presentar un fotograma. En la mayoría de los casos, puedes usar una de las siguientes constantes: SWAPPY_SWAP_60FPS, SWAPPY_SWAP_30FPS o SWAPPY_SWAP_20FPS.

En general, deberías llamar a estos métodos inmediatamente después de una llamada a SwappyGL_init(). Sin embargo, quizás debas llamar a estos métodos en otros momentos durante la ejecución del juego.

Cómo configurar ANativeWindow

Swappy necesita el controlador de ANativeWindow a fin de realizar una operación específica de ANativeWindow, como llamar a ANativeWindow_setFrameRate(). Llama a SwappyGL_setWindow() cuando cambie la plataforma de visualización de Android y tengas un nuevo controlador ANativeWindow (consulta la muestra de Bouncyball para ver un ejemplo).

Modos automáticos

Android Frame Pacing ajusta la duración del intercambio y el modo de canalización en función de la duración promedio de los fotogramas anteriores. Puedes controlar este comportamiento mediante las siguientes funciones:

Cómo realizar intercambios por fotograma

Durante el procesamiento de cada fotograma, llama a bool SwappyGL_swap(EGLDisplay display, EGLSurface surface). Este método une el eglSwapBuffers() de OpenGL ES, por lo que debes reemplazar todas las instancias de eglSwapBuffers() de tu juego por SwappyGL_swap().

Funciones de utilidad

El siguiente método verifica si Android Frame Pacing está habilitado:

Es posible que una instancia de Android Frame Pacing no pueda inicializarse debido a alguno de los siguientes motivos:

  • El dispositivo no cuenta con las funciones de EGL necesarias.
  • El sistema estableció la propiedad swappy.disable.

En cualquiera de estas situaciones, SwappyGL_isEnabled() muestra false, y se recomienda que implementes una estrategia alternativa de ritmo de fotogramas.