Usa 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:
void SwappyGL_setSwapIntervalNS(uint64_t swap_ns);void SwappyGL_setFenceTimeoutNS(uint64_t fence_timeout_ns);void SwappyGL_setUseAffinity(bool tf);
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 para 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:
void SwappyGL_setAutoSwapInterval(bool enabled);void SwappyGL_setMaxAutoSwapIntervalNS(uint64_t max_swap_ns);void SwappyGL_setAutoPipelineMode(bool enabled);
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.