Frame-Taktungsfunktionen hinzufügen

Mit den folgenden Funktionen können Sie Android Frame Pacing mit einem Rendering-Modul verwenden, das auf der OpenGL ES API basiert.

Initialisieren und vernichten

Verwenden Sie die folgenden Funktionen, um eine Instanz der Android-Frame-Taktung zu initialisieren und zu löschen:

Im Allgemeinen sollten Sie SwappyGL_init() so früh wie möglich während der Startsequenz der Suchmaschine und SwappyGL_destroy() beim Beenden des Spiels aufrufen. Sie sollten diese Methoden zu keinem anderen Zeitpunkt aufrufen müssen.

Auslagerungsintervall und Aktualisierungszeitraum konfigurieren

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

Wenn Sie SwappyGL_setSwapIntervalNS() aufrufen, übergeben Sie die Dauer, während der 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 dem 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 ANativeWindow, um ANativeWindow-spezifische Vorgänge wie das Aufrufen von ANativeWindow_setFrameRate() auszuführen. Rufe SwappyGL_setWindow() auf, wenn sich deine Android-Anzeigeoberfläche geändert hat und du einen neuen ANativeWindow-Alias hast. Ein Beispiel findest du im Bouncyball-Beispiel.

Automatische Modi

Die Android Frame Pacing passt die Auslagerungsdauer und den Pipelinemodus basierend auf der durchschnittlichen Dauer vorheriger Frames an. Sie können dieses Verhalten mit den folgenden Funktionen steuern:

Austausch pro Frame durchführen

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

Dienstfunktionen

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

Es kann sein, dass eine Instanz von Android Frame Pacing sich aus einem der folgenden Gründe nicht selbst initialisieren kann:

  • Auf dem Gerät fehlen die erforderlichen EGL-Funktionen.
  • Das System hat die Eigenschaft swappy.disable festgelegt.

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