49 lines
1.0 KiB
Markdown
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) - 初始化
|