添加帧率调节功能

使用以下函数将Android帧速率与基于OpenGL ES API的渲染引擎一起使用。

初始化和销毁

使用以下函数分别初始化和销毁Android帧速率实例

一般来说,您应该在引擎启动序列的早期尽可能早地调用SwappyGL_init(),并在游戏退出时调用SwappyGL_destroy()。您不需要在任何其他时间调用这些方法。

配置交换间隔和刷新周期

使用以下函数配置Android帧速率实例

调用SwappyGL_setSwapIntervalNS()时,传入应呈现帧的持续时间。在大多数情况下,您可以使用以下常量之一:SWAPPY_SWAP_60FPSSWAPPY_SWAP_30FPSSWAPPY_SWAP_20FPS

一般来说,您应该在调用SwappyGL_init()之后直接调用这些方法。但是,您可能还需要在游戏执行过程中的其他时间调用这些方法。

设置ANativeWindow

Swappy需要ANativeWindow的句柄才能执行ANativeWindow特定的操作,例如调用ANativeWindow_setFrameRate()。当您的Android显示界面发生更改并且您有新的ANativeWindow句柄时,请调用SwappyGL_setWindow()(请参阅Bouncyball示例了解示例)。

自动模式

Android帧速率根据先前帧的平均持续时间调整交换持续时间和管道模式。您可以使用以下函数控制此行为

执行每帧交换

在每个渲染帧期间,调用bool SwappyGL_swap(EGLDisplay display, EGLSurface surface)。此方法包装了来自Open GL ES的eglSwapBuffers()方法,因此您应该将游戏中的所有eglSwapBuffers()实例替换为SwappyGL_swap()

实用函数

以下方法检查Android帧速率是否已启用

Android帧速率实例可能无法自行初始化,原因如下:

  • 设备上缺少必要的EGL函数。
  • 系统已设置swappy.disable属性。

在这两种情况下,SwappyGL_isEnabled()返回false,最好实现替代的帧速率策略。