适用于 OpenGL 的 Swappy
Swappy 的 OpenGL 部件。
摘要
函数 |
|
---|---|
SwappyGL_destroy()
|
void
销毁资源并停止 Swappy 创建的所有线程。
|
SwappyGL_getFenceTimeoutNS()
|
uint64_t
获取栅栏超时值(以纳秒为单位)。
|
SwappyGL_getRefreshPeriodNanos()
|
uint64_t
获取刷新周期值(以纳秒为单位)。
|
SwappyGL_getSwapIntervalNS()
|
uint64_t
获取交换间隔值(以纳秒为单位)。
|
SwappyGL_getUseAffinity()
|
bool
|
SwappyGL_init(JNIEnv *env, jobject jactivity)
|
bool
初始化 Swappy,通过 JNI 从显示子系统获取所需的 Android 参数。
|
SwappyGL_init_internal(JNIEnv *env, jobject jactivity)
|
bool
|
SwappyGL_isEnabled()
|
bool
检查 Swappy 是否已成功初始化。
|
SwappyGL_setFenceTimeoutNS(uint64_t fence_timeout_ns)
|
void
为存在驱动程序故障的设备设置栅栏超时参数。
|
SwappyGL_setSwapIntervalNS(uint64_t swap_ns)
|
void
覆盖交换间隔。
|
SwappyGL_setUseAffinity(bool tf)
|
void
|
SwappyGL_setWindow(ANativeWindow *window)
|
bool
告诉 Swappy 调用 ANativeWindow_* API 时使用哪个 ANativeWindow。
|
SwappyGL_swap(EGLDisplay display, EGLSurface surface)
|
bool
以此替换对 eglSwapBuffers 的调用。
|
函数
SwappyGL_getFenceTimeoutNS
uint64_t SwappyGL_getFenceTimeoutNS()
获取栅栏超时值(以纳秒为单位)。
SwappyGL_getRefreshPeriodNanos
uint64_t SwappyGL_getRefreshPeriodNanos()
获取刷新周期值(以纳秒为单位)。
SwappyGL_getSwapIntervalNS
uint64_t SwappyGL_getSwapIntervalNS()
获取交换间隔值(以纳秒为单位)。
SwappyGL_getUseAffinity
bool SwappyGL_getUseAffinity()
SwappyGL_init
bool SwappyGL_init( JNIEnv *env, jobject jactivity )
初始化 Swappy,通过 JNI 从显示子系统获取所需的 Android 参数。
另请参阅:SwappyGL_destroy
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
||||
返回值 |
如果 Swappy 未能初始化则为 false。
|
SwappyGL_init_internal
bool SwappyGL_init_internal( JNIEnv *env, jobject jactivity )
SwappyGL_isEnabled
bool SwappyGL_isEnabled()
检查 Swappy 是否已成功初始化。
详细信息 | |
---|---|
返回值 |
如果
swappy.disable 系统属性不是 false 或 Swappy 无法使用所需的 OpenGL 扩展,则为 false。 |
SwappyGL_setFenceTimeoutNS
void SwappyGL_setFenceTimeoutNS( uint64_t fence_timeout_ns )
为存在驱动程序故障的设备设置栅栏超时参数。
其默认值为 50,000,000ns (50ms)。
SwappyGL_setSwapIntervalNS
void SwappyGL_setSwapIntervalNS( uint64_t swap_ns )
覆盖交换间隔。
默认情况下,Swappy 会基于实际帧渲染时间调整交换间隔。
如果应用想要覆盖由 Swappy 计算的交换间隔,它可以调用此函数:
- 这会暂时覆盖 Swappy 的帧计时,但除非调用
SwappyGL_setAutoSwapInterval(false)
,否则计时将动态更新,因此交换间隔可能会发生变化。 - 这会设置运行的最小间隔。例如,
SwappyGL_setSwapIntervalNS(SWAPPY_SWAP_30FPS)
不会允许 Swappy 更快速地交换,即使自动模式确定它可以这样。但是,如果自动模式处于开启状态,可能会变慢。
详细信息 | |||
---|---|---|---|
参数 |
|
SwappyGL_setUseAffinity
void SwappyGL_setUseAffinity( bool tf )
SwappyGL_setWindow
bool SwappyGL_setWindow( ANativeWindow *window )
告诉 Swappy 调用 ANativeWindow_* API 时使用哪个 ANativeWindow。
详细信息 | |||
---|---|---|---|
参数 |
|
SwappyGL_swap
bool SwappyGL_swap( EGLDisplay display, EGLSurface surface )
以此替换对 eglSwapBuffers 的调用。
Swappy 将等待 GPU 处理上一帧的缓冲区,然后才实际调用 eglSwapBuffers。