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

1.3 KiB
Raw Blame History

OpenGLFence::GetStatus

FenceStatus GetStatus() const;

获取栅栏的当前状态。

详细描述

此方法查询 OpenGL 同步对象的实际状态:

  1. 如果 m_syncnullptr,返回软件层面的 m_signaled 状态
  2. 如果 m_sync 存在,调用 glGetSynciv(sync, GL_SYNC_STATUS, ...) 查询 OpenGL 状态
  3. 根据 GL_SYNC_STATUS 返回 FenceStatus::SignaledFenceStatus::Unsignaled

IsSignaled() 的区别:

  • GetStatus():查询 OpenGL 同步对象状态,更准确但有 GPU 开销
  • IsSignaled():返回软件标志,快速但不反映 GPU 实际状态

参数

返回值

类型 描述
FenceStatus 栅栏状态,值为以下之一:
FenceStatus::Signaled - 栅栏已signaledGPU 操作已完成
FenceStatus::Unsignaled - 栅栏未signaledGPU 操作未完成
FenceStatus::Error - 此实现不会返回此值(错误处理在底层)

示例

OpenGLFence fence;
fence.Initialize(false);
fence.Signal();

FenceStatus status = fence.GetStatus();
if (status == FenceStatus::Signaled) {
    // GPU 操作已完成
}

相关文档