Aggiungere funzioni di pacing dei frame

Utilizza le seguenti funzioni per usare il pacing dei frame Android con un motore di rendering basato sull'API OpenGL ES.

Inizializza ed elimina

Utilizza le seguenti funzioni per inizializzare ed eliminare rispettivamente un'istanza di pacing del frame Android:

In generale, dovresti chiamare SwappyGL_init() il prima possibile durante la sequenza di avvio del motore e SwappyGL_destroy() quando il gioco sta uscendo. Non dovresti chiamare questi metodi in nessun altro momento.

Configura l'intervallo di scambio e il periodo di aggiornamento

Utilizza le seguenti funzioni per configurare un'istanza di pacing del frame Android:

Quando chiami SwappyGL_setSwapIntervalNS(), specifica la durata di presentazione di un frame. Nella maggior parte dei casi, puoi utilizzare una delle seguenti costanti: SWAPPY_SWAP_60FPS, SWAPPY_SWAP_30FPS o SWAPPY_SWAP_20FPS.

In generale, dovresti chiamare questi metodi direttamente dopo una chiamata a SwappyGL_init(). Tuttavia, potresti dover chiamare questi metodi anche in altri momenti durante l'esecuzione del gioco.

Impostazione di AnativeWindow

Swappy ha bisogno dell'handle di ANativeWindow per eseguire un'operazione specifica per ANativeWindow, come la chiamata a ANativeWindow_setFrameRate(). Chiama SwappyGL_setWindow() quando la piattaforma display Android è cambiata e hai un nuovo handle di ANativeWindow (vedi l'esempio di bouncyball per un esempio).

Modalità automatiche

Il pacing dei frame Android regola la durata di scambio e la modalità pipeline in base alla durata media dei frame precedenti. Puoi controllare questo comportamento con le seguenti funzioni:

Esegui scambio per frame

Durante ogni frame di rendering, chiama bool SwappyGL_swap(EGLDisplay display, EGLSurface surface). Questo metodo esegue il wrapping del metodo eglSwapBuffers() di Open GL ES, quindi devi sostituire tutte le istanze di eglSwapBuffers() nel gioco con SwappyGL_swap().

Funzioni di utilità

Il seguente metodo controlla se il pacing dei frame Android è attivo:

È possibile che un'istanza di pacing del frame Android non sia in grado di inizializzarsi per uno dei seguenti motivi:

  • Sul dispositivo mancano le funzioni EGL necessarie.
  • Il sistema ha impostato la proprietà swappy.disable.

In entrambe queste situazioni, SwappyGL_isEnabled() restituisce false ed è consigliabile implementare una strategia di pacing dei frame alternativa.