Добавьте функции изменения частоты кадров

Используйте следующие функции, чтобы использовать Android Frame Pacing с механизмом рендеринга на основе API OpenGL ES.

Инициализировать и уничтожить

Используйте следующие функции для инициализации и уничтожения экземпляра Android Frame Pacing соответственно:

В общем, вам следует вызывать SwappyGL_init() как можно раньше во время запуска движка, а SwappyGL_destroy() следует вызывать при выходе из игры. Вам не нужно вызывать эти методы в любое другое время.

Настройка интервала замены и периода обновления

Используйте следующие функции для настройки экземпляра Android Frame Pacing:

При вызове SwappyGL_setSwapIntervalNS() укажите продолжительность представления кадра. В большинстве случаев вы можете использовать одну из следующих констант: SWAPPY_SWAP_60FPS , SWAPPY_SWAP_30FPS или SWAPPY_SWAP_20FPS .

Как правило, вам следует вызывать эти методы непосредственно после вызова SwappyGL_init() . Однако вам также может потребоваться вызывать эти методы в других случаях во время выполнения игры.

Установка ANativeWindow

Swappy нужен дескриптор ANativeWindow для выполнения специфичной для ANativeWindow операции, такой как вызов ANativeWindow_setFrameRate() . Вызовите SwappyGL_setWindow() когда поверхность отображения вашего Android изменилась и у вас есть новый дескриптор ANativeWindow ( пример см. в примере Bouncyball ).

Автоматические режимы

Android Frame Pacing регулирует продолжительность замены и режим конвейера на основе средней продолжительности предыдущих кадров. Вы можете контролировать это поведение с помощью следующих функций:

Выполнить покадровую замену

Во время каждого кадра рендеринга вызывайте bool SwappyGL_swap(EGLDisplay display, EGLSurface surface) . Этот метод является оболочкой метода eglSwapBuffers() из Open GL ES, поэтому вам следует заменить все экземпляры eglSwapBuffers() в вашей игре на SwappyGL_swap() .

Вспомогательные функции

Следующий метод проверяет, включено ли Android Frame Pacing:

Возможно, экземпляр Android Frame Pacing не может инициализироваться по одной из следующих причин:

  • На устройстве отсутствуют необходимые функции EGL.
  • Система установила свойство swappy.disable .

В любой из этих ситуаций SwappyGL_isEnabled() возвращает false , и лучше всего реализовать альтернативную стратегию регулирования скорости кадров.

,

Используйте следующие функции, чтобы использовать Android Frame Pacing с механизмом рендеринга на основе API OpenGL ES.

Инициализировать и уничтожить

Используйте следующие функции для инициализации и уничтожения экземпляра Android Frame Pacing соответственно:

В общем, вам следует вызывать SwappyGL_init() как можно раньше во время запуска движка, а SwappyGL_destroy() следует вызывать при выходе из игры. Вам не нужно вызывать эти методы в любое другое время.

Настройка интервала замены и периода обновления

Используйте следующие функции для настройки экземпляра Android Frame Pacing:

При вызове SwappyGL_setSwapIntervalNS() укажите продолжительность представления кадра. В большинстве случаев вы можете использовать одну из следующих констант: SWAPPY_SWAP_60FPS , SWAPPY_SWAP_30FPS или SWAPPY_SWAP_20FPS .

Как правило, вам следует вызывать эти методы непосредственно после вызова SwappyGL_init() . Однако вам также может потребоваться вызывать эти методы в других случаях во время выполнения игры.

Установка ANativeWindow

Swappy нужен дескриптор ANativeWindow для выполнения специфичной для ANativeWindow операции, такой как вызов ANativeWindow_setFrameRate() . Вызовите SwappyGL_setWindow() когда поверхность отображения вашего Android изменилась и у вас есть новый дескриптор ANativeWindow ( пример см. в примере Bouncyball ).

Автоматические режимы

Android Frame Pacing регулирует продолжительность замены и режим конвейера на основе средней продолжительности предыдущих кадров. Вы можете контролировать это поведение с помощью следующих функций:

Выполнить покадровую замену

Во время каждого кадра рендеринга вызывайте bool SwappyGL_swap(EGLDisplay display, EGLSurface surface) . Этот метод является оболочкой метода eglSwapBuffers() из Open GL ES, поэтому вам следует заменить все экземпляры eglSwapBuffers() в вашей игре на SwappyGL_swap() .

Вспомогательные функции

Следующий метод проверяет, включено ли Android Frame Pacing:

Возможно, экземпляр Android Frame Pacing не может инициализироваться по одной из следующих причин:

  • На устройстве отсутствуют необходимые функции EGL.
  • Система установила свойство swappy.disable .

В любой из этих ситуаций SwappyGL_isEnabled() возвращает false , и лучше всего реализовать альтернативную стратегию регулирования скорости кадров.