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