Usa 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 un'istanza di pacing del frame Android, rispettivamente:
In generale, devi chiamare SwappyGL_init()
il prima possibile durante la sequenza di avvio del motore e devi chiamare SwappyGL_destroy()
quando il gioco uscirà. Non dovrebbe essere necessario richiamare 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 dei 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, devi chiamare questi metodi direttamente dopo una chiamata a SwappyGL_init()
. Tuttavia, potresti dover richiamare questi metodi anche in altri momenti durante l'esecuzione del gioco.
Impostazione di A NativeWindow
Stackpy ha bisogno dell'handle di ANativeWindow
per eseguire
un'operazione specifica per ANativeWindow
, ad esempio chiamare
ANativeWindow_setFrameRate()
.
Chiama SwappyGL_setWindow()
quando la piattaforma del tuo 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 dovresti
sostituire tutte le istanze di eglSwapBuffers()
nel tuo gioco con SwappyGL_swap()
.
Funzioni di utilità
Il seguente metodo verifica se il pacing dei frame Android è attivato:
È possibile che un'istanza di pacing del frame Android non sia in grado di inizializzarsi per uno dei seguenti motivi:
- Le funzioni EGL necessarie non sono presenti sul dispositivo.
- Il sistema ha impostato la proprietà
swappy.disable
.
In una di queste situazioni, SwappyGL_isEnabled()
restituisce false
ed è consigliabile
implementare una strategia di pacing dei frame alternativa.