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

4.7 KiB
Raw Blame History

D3D12

命名空间: XCEngine::RHI

类型: submodule

描述: XCEngine 的 Direct3D 12 后端入口,负责把抽象 RHI 设备、命令、描述符、资源和交换链映射到 DXGI 与 D3D12 原生对象。

概览

D3D12 子模块可以理解成引擎图形后端里更接近商业引擎 GfxDevice / Render Backend 的那一层,而不是脚本层会直接操作的高层渲染 API。

当前目录下的类型大体分成四组:

设计要点

  • 这套后端明显偏向“显式控制、轻量工厂、调用方自行管理生命周期”的风格,而不是 Unity 那种高度托管对象模型。
  • RHI 层暴露了“descriptor set / pipeline layout”这一套跨后端抽象但在 D3D12 中真正落地的是 root signature、descriptor heap 和 root parameter 映射。
  • 代码把“先打通统一语义”放在更高优先级,因此部分实现是简化版。例如队列空闲等待、常量缓冲上传、资源状态跟踪都先覆盖主路径,再逐步补足更成熟的工程策略。

当前实现边界

  • 平台路径是 Windows + DXGI + D3D12。
  • 设备初始化会从 adapterIndex 开始枚举适配器,跳过软件适配器,选择第一个能创建 D3D_FEATURE_LEVEL_11_0 设备的硬件适配器。
  • D3D12CommandQueueD3D12CommandListD3D12DescriptorSet 已经形成了可跑通的核心路径,但仍存在一些明显的占位或简化实现。
  • 若你熟悉 Unity可以把这里理解成“比 SRP backend 更低一层”的运行时封装;它强调可组合性和后端细节可见性,而不是隐藏 D3D12 的显式同步和绑定成本。

推荐阅读顺序

  1. D3D12Device
  2. D3D12CommandQueue
  3. D3D12CommandList
  4. D3D12PipelineLayout
  5. D3D12DescriptorSet

与测试的对应关系

  • tests/RHI/D3D12/unit/ 直接验证 D3D12 后端实现细节。
  • tests/RHI/unit/test_device.cpptests/RHI/unit/test_descriptor_set.cpptests/RHI/unit/test_pipeline_layout.cpp 会通过抽象层接口回归统一语义。
  • tests/RHI/D3D12/integration/tests/Rendering/integration/* 负责覆盖真正的提交、呈现与截图链路。

头文件索引

相关文档