Files
XCEngine/docs/api/rhi/opengl/fence/signal.md
2026-03-20 02:35:45 +08:00

49 lines
1.0 KiB
Markdown

# OpenGLFence::Signal
```cpp
void Signal() override;
void Signal(uint64_t value) override;
```
将栅栏设置为 signaled 状态,通知等待的线程操作完成。
## 详细描述
`Signal()` 执行以下操作:
1. 调用 `glFlush()` 确保所有挂起的 OpenGL 命令已发送到 GPU
2. 增加 `m_fenceValue`(无参版本)或设置为指定值
3. 设置 `m_signaled = true`
4. 如果 `m_sync` 已存在,先删除旧对象
5. 调用 `glFenceSync()` 创建新的 `GLsync` 对象
## 参数
| 重载 | 参数 | 类型 | 描述 |
|------|------|------|------|
| `Signal()` | 无 | - | 将栅栏值增加 1 |
| `Signal(uint64_t value)` | `value` | `uint64_t` | 设置栅栏为指定值 |
## 返回值
## 示例
```cpp
OpenGLFence fence;
fence.Initialize(false);
// 无参版本:栅栏值 +1
fence.Signal();
// 带值版本:设置指定栅栏值
fence.Signal(5);
```
## 相关文档
- [OpenGLFence 总览](fence.md) - 返回类总览
- [Wait](wait.md) - 等待栅栏
- [Initialize](initialize.md) - 初始化