Frame-Taktungsfunktionen hinzufügen

Verwenden Sie die folgenden Funktionen, um Android Frame Pacing mit einer Rendering-Engine zu verwenden, die auf der OpenGL ES API basiert.

Initialisieren und zerstören

Verwenden Sie die folgenden Funktionen, um eine Instanz von Android Frame Pacing zu initialisieren bzw. zu zerstören:

Im Allgemeinen sollten Sie SwappyGL_init() so früh wie möglich während der Startsequenz der Engine aufrufen und SwappyGL_destroy(), wenn das Spiel beendet wird. Sie sollten diese Methoden zu keinem anderen Zeitpunkt aufrufen müssen.

Swap-Intervall und Aktualisierungszeitraum konfigurieren

Verwenden Sie die folgenden Funktionen, um eine Instanz von Android Frame Pacing zu konfigurieren:

Übergeben Sie beim Aufrufen von SwappyGL_setSwapIntervalNS() die Dauer, für die ein Frame präsentiert werden soll. In den meisten Fällen können Sie eine der folgenden Konstanten verwenden: SWAPPY_SWAP_60FPS, SWAPPY_SWAP_30FPS oder SWAPPY_SWAP_20FPS.

Im Allgemeinen sollten Sie diese Methoden direkt nach einem Aufruf von SwappyGL_init() aufrufen. Möglicherweise müssen Sie diese Methoden jedoch auch zu anderen Zeiten während der Ausführung Ihres Spiels aufrufen.

ANativeWindow festlegen

Swappy benötigt den Handle von ANativeWindow, um ANativeWindow-spezifische Vorgänge auszuführen, z. B. ANativeWindow_setFrameRate() aufzurufen. Rufen Sie SwappyGL_setWindow() auf, wenn sich die Android-Anzeigeoberfläche geändert hat und Sie ein neues ANativeWindow-Handle haben (ein Beispiel finden Sie im Bouncyball-Beispiel).

Automatikmodi

Android Frame Pacing passt die Swap-Dauer und den Pipeline-Modus basierend auf der durchschnittlichen Dauer der vorherigen Frames an. Sie können dieses Verhalten mit den folgenden Funktionen steuern:

Swap pro Frame durchführen

Rufen Sie während jedes Rendering-Frames bool SwappyGL_swap(EGLDisplay display, EGLSurface surface) auf. Diese Methode umschließt die eglSwapBuffers()-Methode aus Open GL ES. Sie sollten daher alle Instanzen von eglSwapBuffers() in Ihrem Spiel durch SwappyGL_swap() ersetzen.

Hilfsfunktionen

Mit der folgenden Methode wird geprüft, ob Android Frame Pacing aktiviert ist:

Es ist möglich, dass eine Instanz von Android Frame Pacing aus einem der folgenden Gründe nicht initialisiert werden kann:

  • Die erforderlichen EGL-Funktionen sind auf dem Gerät nicht vorhanden.
  • Das System hat das Attribut swappy.disable festgelegt.

In beiden Fällen gibt SwappyGL_isEnabled() den Wert false zurück. Es empfiehlt sich, eine alternative Frame-Pacing-Strategie zu implementieren.