diff --git a/docs/plan/第二阶段计划.md b/docs/plan/第二阶段计划.md index 29affed8..5ccb2908 100644 --- a/docs/plan/第二阶段计划.md +++ b/docs/plan/第二阶段计划.md @@ -20,32 +20,33 @@ ## 2.2 目录结构 ``` -RHI/ # 渲染硬件抽象层 -├── RHISystem.h # RHI 系统入口 -├── RHIDevice.h # 抽象设备接口 -├── Types.h # 通用类型定义 -├── Enums.h # 枚举定义 -├── Resource.h # 资源基类接口 -├── ResourceView.h # 资源视图基类接口 -├── RenderTargetView.h # 渲染目标视图接口 -├── DepthStencilView.h # 深度模板视图接口 -├── ShaderResourceView.h # 着色器资源视图接口 -├── UnorderedAccessView.h # 无序访问视图接口 -├── ConstantBufferView.h # 常量缓冲区视图接口 -├── CommandQueue.h # 命令队列 -├── CommandList.h # 命令列表 -├── CommandAllocator.h # 命令分配器 -├── Fence.h # 同步围栏 -├── DescriptorHeap.h # 描述符堆 -├── QueryHeap.h # 查询堆 -├── RootSignature.h # 根签名 -├── PipelineState.h # 管线状态 -├── Sampler.h # 采样器 -├── SwapChain.h # 交换链 -├── Texture.h # 纹理资源 -├── Buffer.h # 缓冲区资源 -├── Shader.h # 着色器 -└── D3D12/ # D3D12 后端实现 +engine/include/XCEngine/RHI/ # 渲染硬件抽象层(公开API) +├── Enums.h # 枚举定义(独立编号,跨平台) +├── Types.h # 通用类型定义 +├── RHISystem.h # RHI 系统入口 +├── RHIDevice.h # 抽象设备接口 +├── Resource.h # 资源基类接口 +├── ResourceView.h # 资源视图基类接口 +├── RenderTargetView.h # 渲染目标视图接口 +├── DepthStencilView.h # 深度模板视图接口 +├── ShaderResourceView.h # 着色器资源视图接口 +├── UnorderedAccessView.h # 无序访问视图接口 +├── ConstantBufferView.h # 常量缓冲区视图接口 +├── CommandQueue.h # 命令队列 +├── CommandList.h # 命令列表 +├── CommandAllocator.h # 命令分配器 +├── Fence.h # 同步围栏 +├── DescriptorHeap.h # 描述符堆 +├── QueryHeap.h # 查询堆 +├── RootSignature.h # 根签名 +├── PipelineState.h # 管线状态 +├── Sampler.h # 采样器 +├── SwapChain.h # 交换链 +├── Texture.h # 纹理资源 +├── Buffer.h # 缓冲区资源 +├── Shader.h # 着色器 +└── D3D12/ # D3D12 后端实现 + ├── D3D12Enum.h # 枚举转换层(RHI→D3D12) ├── D3D12Device.h ├── D3D12Device.cpp ├── D3D12CommandList.h @@ -84,7 +85,7 @@ RHI/ # 渲染硬件抽象层 ├── D3D12UnorderedAccessView.cpp ├── D3D12ConstantBufferView.h ├── D3D12ConstantBufferView.cpp - └── D3D12Common.h # 公共定义 + └── D3D12Common.h # 公共定义 ``` --- @@ -696,8 +697,11 @@ D3D12相关的公共定义和辅助函数: ``` 阶段 2.1: 基础枚举与类型 (1天) - ├── 2.1.1 Enums.h - └── 2.1.2 Types.h (通用类型定义) + ├── 2.1.1 Enums.h [已完成] + │ └── RHI枚举定义(独立编号) + ├── 2.1.2 Types.h (通用类型定义) + └── 2.1.3 D3D12Enum.h [已完成] + └── 枚举转换层(RHI→D3D12) 阶段 2.2: 核心接口定义 (3天) ├── 2.2.1 RHISystem.h @@ -798,6 +802,23 @@ D3D12要求严格的状态管理: - GPUDescriptorHandle/CPUDescriptorHandle 作为通用句柄类型 - 资源状态使用统一的ResourceStates枚举 - 创建描述符结构体独立于特定API +- RHI枚举使用独立编号,通过转换层转换为特定API枚举 + +### 2.6.8 枚举转换层 + +RHI枚举使用独立编号(与任何图形API无关),通过转换层转换为特定API: +```cpp +// RHI枚举(独立编号) +enum class FillMode { Wireframe, Solid }; + +// D3D12转换层 +inline D3D12_FILL_MODE ToD3D12(FillMode mode) { + switch (mode) { + case FillMode::Wireframe: return D3D12_FILL_MODE_WIREFRAME; + case FillMode::Solid: return D3D12_FILL_MODE_SOLID; + } +} +``` ---