Files
XCEngine/docs/api/XCEngine/RHI/OpenGL/OpenGLCommandQueue/OpenGLCommandQueue.md

2.6 KiB
Raw Blame History

OpenGLCommandQueue

命名空间: XCEngine::RHI

类型: class

头文件: XCEngine/RHI/OpenGL/OpenGLCommandQueue.h

描述: 为统一 RHI 抽象保留的 OpenGL 命令队列门面;它不是一条真实的 GPU 提交队列,而是一个接口适配层。

概览

OpenGL 没有 D3D12/Vulkan 那种显式 command queue 模型,因此 OpenGLCommandQueue 的存在主要是为了:

  • 保持跨后端接口一致
  • 给测试和上层 RHI 代码一个统一的 RHICommandQueue 入口
  • 封装少量 glFlush() / glFinish() / fence 相关行为

设计定位

这个类应被理解为 shim而不是调度核心。

它能做的事情很有限:

  • 把信号语义桥接到 OpenGLFence
  • 提供“等待 GPU 空闲”的同步入口
  • 给测试返回一个统一的 queue 类型和 native handle

它当前做不了这些事:

  • 真正的命令列表提交
  • 真正的跨线程 GPU timeline 管理
  • 帧序号推进

当前实现的真实行为

为什么这样设计

这是一种很典型的“为了统一抽象而保留的后端占位层”。

在商业级引擎里,只要继续支持 OpenGL类似的 shim 往往也不可避免,因为:

  • 上层代码想按队列模型组织逻辑
  • 但 OpenGL 底层并没有对应对象

当前实现选择了最保守的一条路:保留接口,让测试和基础流程先跑通,再逐步补更多语义。

当前限制

  • ExecuteCommandLists()Wait()WaitForPreviousFrame() 都还是占位实现
  • GetCompletedValue() 没有真实 GPU 进度含义
  • GetTimestampFrequency() 的语义并不精确
  • 没有自己的资源或生命周期状态

关键方法

相关文档