1.0 KiB
1.0 KiB
OpenGLFence::Signal()
void Signal() override;
void Signal(uint64_t value) override;
作用
为当前 fence 记录一个新的 signal 点,并插入新的 GPU 栅栏。
无参重载
void Signal() override;
当前实现行为
- 直接转发到
Signal(1)
需要特别注意
这不是“在当前值基础上递增 1”,而是固定把 signal 值设置为 1。
带值重载
void Signal(uint64_t value) override;
当前实现行为
- 如果已有旧
m_sync:- 先
glClientWaitSync(..., GL_TIMEOUT_IGNORED) - 再
glDeleteSync - 然后把
m_sync置空
- 先
- 调用
glFlush() - 把
m_signaledValue更新为value - 调用
glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0)创建新的同步对象
设计说明
这套实现的本质是“用最新的一次 signal 覆盖上一段历史”。它适合当前引擎的基础提交模型,但和真正能保留完整时间线历史的 fence 仍然不同。