# OpenGLFence::GetStatus ```cpp FenceStatus GetStatus() const; ``` 获取栅栏的当前状态。 ## 详细描述 此方法查询 OpenGL 同步对象的实际状态: 1. 如果 `m_sync` 为 `nullptr`,返回软件层面的 `m_signaled` 状态 2. 如果 `m_sync` 存在,调用 `glGetSynciv(sync, GL_SYNC_STATUS, ...)` 查询 OpenGL 状态 3. 根据 `GL_SYNC_STATUS` 返回 `FenceStatus::Signaled` 或 `FenceStatus::Unsignaled` 与 `IsSignaled()` 的区别: - `GetStatus()`:查询 OpenGL 同步对象状态,更准确但有 GPU 开销 - `IsSignaled()`:返回软件标志,快速但不反映 GPU 实际状态 ## 参数 无 ## 返回值 | 类型 | 描述 | |------|------| | `FenceStatus` | 栅栏状态,值为以下之一: | | | `FenceStatus::Signaled` - 栅栏已signaled,GPU 操作已完成 | | | `FenceStatus::Unsignaled` - 栅栏未signaled,GPU 操作未完成 | | | `FenceStatus::Error` - 此实现不会返回此值(错误处理在底层) | ## 示例 ```cpp OpenGLFence fence; fence.Initialize(false); fence.Signal(); FenceStatus status = fence.GetStatus(); if (status == FenceStatus::Signaled) { // GPU 操作已完成 } ``` ## 相关文档 - [OpenGLFence 总览](fence.md) - 返回类总览 - [IsSignaled](is-signaled.md) - 快速状态检查