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

3.9 KiB
Raw Blame History

OpenGL

命名空间: XCEngine::RHI

类型: submodule

描述: XCEngine 的 OpenGL 后端入口,负责在 Win32/WGL 上建立上下文,并把抽象 RHI 设备、命令、资源和绑定模型适配为有状态的 OpenGL 调用序列。

概览

与 D3D12、Vulkan 这种“先记录、再提交”的显式后端不同,当前 OpenGL 子模块的核心特点是:

  • 它依赖一个活动的 OpenGL 上下文
  • 很多“命令列表”接口实际会立即对当前上下文生效
  • descriptor set、pipeline layout、pipeline state 等抽象概念,在这里大多是适配层,而不是 OpenGL 原生对象

如果你熟悉 Unity可以把它理解成“老牌状态机图形 API 的一层引擎化封装”重点不在提交队列而在把状态切换、纹理单元、uniform buffer 绑定和 framebuffer 组合管理好。

设计要点

  • 设备层负责 WGL 上下文与能力探测。
  • OpenGLCommandQueue 更像兼容抽象层的门面,而不是一条真实的 GPU 提交队列。
  • OpenGLCommandList 更接近“状态与调用包装器”,不是可延迟提交的录制命令缓冲。
  • OpenGLPipelineState 是 CPU 侧状态容器,Bind() 时把状态应用到当前上下文。
  • OpenGLDescriptorSet 是对纹理单元、sampler 绑定点和 uniform buffer 绑定点的统一封装。

当前实现边界

  • 平台路径是 Windows + WGL。
  • 设备初始化支持隐藏窗口自建上下文,也支持附着到现有窗口。
  • 命令队列和命令列表抽象已经能打通统一 RHI 路径,但不少接口仍然是适配性质的轻包装。
  • 部分能力字段或设备信息字段带有“近似值”或“哨兵值”性质,不能把它们当作驱动级精确信息。

推荐阅读顺序

  1. OpenGLDevice
  2. OpenGLCommandList
  3. OpenGLPipelineState
  4. OpenGLShader
  5. OpenGLDescriptorSet

与测试的对应关系

  • tests/RHI/OpenGL/unit/ 用于覆盖 OpenGL 后端专项行为。
  • tests/RHI/unit/test_shader.cpptests/RHI/unit/test_pipeline_layout.cpp 会通过统一抽象验证 OpenGL 路径。
  • tests/RHI/OpenGL/integration/tests/Rendering/integration/* 覆盖真实绘制和截图结果。

头文件索引

相关文档