适用于 OpenGL 的 Swappy(附加函数)
将 Swappy 与 OpenGL 结合使用的附加效用函数。
摘要
函数 |
|
---|---|
SwappyGL_enableStats(bool enabled)
|
void
打开/关闭统计信息收集。
|
SwappyGL_getStats(SwappyStats *swappyStats)
|
void
返回收集的统计信息(如果已打开统计信息收集)。
|
SwappyGL_injectTracer(const SwappyTracer *t)
|
void
为每个帧传递需调用的回调,用以跟踪执行情况。
|
SwappyGL_onChoreographer(int64_t frameTimeNanos)
|
void
如果应用想要使用 Android Choreographer 为 Swappy 提供 tick,可以调用此函数。
|
SwappyGL_recordFrameStart(EGLDisplay display, EGLSurface surface)
|
void
如果通过 SwappyGL_enableStats 启用统计信息,应进行调用。
|
SwappyGL_setAutoPipelineMode(bool enabled)
|
void
打开/关闭自动流水线模式。
|
SwappyGL_setAutoSwapInterval(bool enabled)
|
void
打开/关闭自动交换间隔检测。
|
SwappyGL_setMaxAutoSwapIntervalNS(uint64_t max_swap_ns)
|
void
设置自动交换间隔的最长持续时间(以毫秒为单位)。
|
宏 |
|
---|---|
MAX_FRAME_BUCKETS 6
|
统计信息表示的最长持续时间(以刷新周期为单位)。
|
结构体 |
|
---|---|
SwappyStats |
Swappy 统计信息,可使用 SwappyGL_enableStats 开启时收集此统计信息。 |
函数
SwappyGL_enableStats
void SwappyGL_enableStats( bool enabled )
打开/关闭统计信息收集。
默认情况下,统计信息收集功能关闭,不存在与统计信息相关的开销。应用可通过调用 SwappyGL_enableStats(true)
打开统计信息收集。然后,应用应开始对每个帧调用 SwappyGL_recordFrameStart,接着再开始执行任何 CPU 相关的工作。统计信息将以“FrameStatistics”标记记录到 logcat 中。应用可以通过调用 SwappyGL_getStats 获取统计信息。
SwappyGL_getStats
void SwappyGL_getStats( SwappyStats *swappyStats )
返回收集的统计信息(如果已打开统计信息收集)。
另请参阅: SwappyStats 另请参阅: SwappyGL_enableStats
详细信息 | |||
---|---|---|---|
参数 |
|
SwappyGL_onChoreographer
void SwappyGL_onChoreographer( int64_t frameTimeNanos )
如果应用想要使用 Android Choreographer 为 Swappy 提供 tick,可以调用此函数。
必须在第一次调用 Swappy_swap()
之前调用此函数。然后,为每个 choreographer tick 调用此函数。
SwappyGL_recordFrameStart
void SwappyGL_recordFrameStart( EGLDisplay display, EGLSurface surface )
如果通过 SwappyGL_enableStats 启用统计信息,应进行调用。
通过 SwappyGL_enableStats 启用统计信息收集之后,应用应首先针对每一帧调用此函数,然后再执行任何 CPU 相关工作。
另请参阅:SwappyGL_enableStats。
SwappyGL_setAutoPipelineMode
void SwappyGL_setAutoPipelineMode( bool enabled )
打开/关闭自动流水线模式。
默认情况下,如果自动交换间隔处于开启状态,自动流水线开启,Swappy 会尝试在同一流水线阶段安排 CPU 和 GPU 工作(如果合适)以减少延迟时间。
SwappyGL_setAutoSwapInterval
void SwappyGL_setAutoSwapInterval( bool enabled )
打开/关闭自动交换间隔检测。
默认情况下,Swappy 会根据实际帧渲染时间调整交换间隔。如果应用想要覆盖由 Swappy 计算得出的交换间隔,它可以调用 SwappyGL_setSwapIntervalNS
。这会暂时覆盖 Swappy 的帧计时,但除非调用 SwappyGL_setAutoSwapInterval(false)
,否则计时将动态更新,因此交换间隔可能会发生变化。
SwappyGL_setMaxAutoSwapIntervalNS
void SwappyGL_setMaxAutoSwapIntervalNS( uint64_t max_swap_ns )
设置自动交换间隔的最长持续时间(以毫秒为单位)。
如果 Swappy 以自动交换间隔运行且帧时长超过 max_swap_ns
,Swappy 不会进行任何同步,只会尽快提交帧。