OpenGL 版 Swappy
Swappy 的 OpenGL 部分。
摘要
函数 |
|
---|---|
SwappyGL_destroy()
|
void
销毁 Swappy 创建的资源并停止所有线程。
|
SwappyGL_getFenceTimeoutNS()
|
uint64_t
获取防护栏超时值(纳秒)。
|
SwappyGL_getRefreshPeriodNanos()
|
uint64_t
获取刷新周期值(纳秒)。
|
SwappyGL_getSupportedRefreshPeriodsNS(uint64_t *out_refreshrates, int allocated_entries)
|
int
获取此设备支持的刷新周期。
|
SwappyGL_getSwapIntervalNS()
|
uint64_t
获取交换间隔值(纳秒)。
|
SwappyGL_getUseAffinity()
|
bool
|
SwappyGL_init(JNIEnv *env, jobject jactivity)
|
bool
初始化 Swappy,通过 JNI 从显示子系统获取必需的 Android 参数。
|
SwappyGL_isEnabled()
|
bool
检查 Swappy 是否已成功初始化。
|
SwappyGL_setBufferStuffingFixWait(int32_t n_frames)
|
void
设置在应用缓冲区填充修复之前要等待的错误帧数。
|
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_getSupportedRefreshPeriodsNS
int SwappyGL_getSupportedRefreshPeriodsNS( uint64_t *out_refreshrates, int allocated_entries )
获取此设备支持的刷新周期。
先调用一次并将 out_refreshrates 设置为 nullptr 以获取支持的刷新周期数,然后再调用一次,将该数字作为 allocated_entries 传递,并传递一个大小等于 allocated_entries 的数组,该数组将填充刷新周期。
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_isEnabled
bool SwappyGL_isEnabled()
检查 Swappy 是否已成功初始化。
详细信息 | |
---|---|
返回值 |
如果
swappy.disable 系统属性不为 false ,或者必需的 OpenGL 扩展不适用于 Swappy,则返回 false 。 |
SwappyGL_setBufferStuffingFixWait
void SwappyGL_setBufferStuffingFixWait( int32_t n_frames )
设置在应用缓冲区填充修复之前要等待的错误帧数。
设置为零以关闭此功能。默认值 = 0。
SwappyGL_setFenceTimeoutNS
void SwappyGL_setFenceTimeoutNS( uint64_t fence_timeout_ns )
为驱动程序有缺陷的设备设置防护栏超时参数。
其默认值为 50,000,000 纳秒(50 毫秒)。
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。
详细信息 | |||
---|---|---|---|
参数 |
|
||
返回值 |
成功时为 true,如果 Swappy 未初始化则为 false。
|
SwappyGL_swap
bool SwappyGL_swap( EGLDisplay display, EGLSurface surface )
将对 eglSwapBuffers 的调用替换为本函数。
Swappy 会等待上一帧的缓冲区由 GPU 处理完毕,然后才会实际调用 eglSwapBuffers。
详细信息 | |
---|---|
返回值 |
成功时为 true,如果出现以下情况则为 false:1) Swappy 未初始化;或 2) eglSwapBuffers 未返回 EGL_TRUE。在后一种情况下,可以使用 eglGetError 获取错误代码。
|