1.1 KiB
1.1 KiB
OpenGLFence::Wait
void Wait(uint64_t timeoutNs) override;
等待栅栏达到 signaled 状态或超时。
详细描述
此方法尝试等待 m_sync(OpenGL 同步对象)变为 signaled 状态:
- 未信号或无同步对象:直接调用
glFinish()阻塞 CPU,直到 GPU 完成所有命令,然后将m_completedValue更新为m_fenceValue - 已信号状态:调用
glClientWaitSync()尝试获取同步状态,支持超时 - timeout = 0:立即返回,不阻塞
内部使用 GL_SYNC_FLUSH_COMMANDS_BIT 标志确保客户端命令已刷新。
参数
| 参数 | 类型 | 描述 |
|---|---|---|
timeoutNs |
uint64_t |
超时时间,以纳秒为单位。为 0 时立即返回 |
返回值
无
示例
OpenGLFence fence;
fence.Initialize(false);
fence.Signal();
// 等待最多 1 秒 (1000000000 ns)
fence.Wait(1000000000);
// 等待最多 100 毫秒
fence.Wait(100000000);
// timeout = 0 立即返回
fence.Wait(0);
相关文档
- OpenGLFence 总览 - 返回类总览
- Signal - 信号栅栏
- IsSignaled - 非阻塞检查状态