# D3D12Enum **命名空间**: `XCEngine::RHI` **类型**: `namespace` (枚举转换函数集合) **描述**: D3D12 枚举值转换函数集合,提供 RHI 抽象枚举到 D3D12 原生枚举的转换。**所有函数均为 inline 函数**。 ## 概述 `D3D12Enum.h` 提供了 RHI 抽象层枚举类型到 DirectX 12 原生枚举类型的转换函数。这些函数是 D3D12 后端实现的核心组成部分,使得上层的 RHI 抽象枚举能够正确转换为对应的 D3D12 枚举值。设计遵循 DirectX 12 规范,涵盖填充模式、剔除模式、混合操作、纹理寻址、图元拓扑等核心渲染参数。 ## 转换函数详细列表 | 函数 | 源类型 | 目标类型 | 描述 | |------|--------|----------|------| | `ToD3D12(FillMode)` | `FillMode` | `D3D12_FILL_MODE` | 填充模式转换 (Wireframe/Solid) | | `ToD3D12(CullMode)` | `CullMode` | `D3D12_CULL_MODE` | 剔除模式转换 (None/Front/Back) | | `ToD3D12(ComparisonFunc)` | `ComparisonFunc` | `D3D12_COMPARISON_FUNC` | 比较函数转换 (Never/Less/Equal/LessEqual/Greater/NotEqual/GreaterEqual/Always) | | `ToD3D12(StencilOp)` | `StencilOp` | `D3D12_STENCIL_OP` | 模板操作转换 (Keep/Zero/Replace/IncrSat/DecrSat/Invert/Incr/Decr) | | `ToD3D12(BlendOp)` | `BlendOp` | `D3D12_BLEND_OP` | 混合操作转换 (Add/Subtract/ReverseSubtract/Min/Max) | | `ToD3D12(BlendFactor)` | `BlendFactor` | `D3D12_BLEND` | 混合因子转换 (Zero/One/SrcColor/InvSrcColor/SrcAlpha/InvSrcAlpha/SrcAlphaSat/BlendFactor/InvBlendFactor) | | `ToD3D12(LogicOp)` | `LogicOp` | `D3D12_LOGIC_OP` | 逻辑操作转换 (Clear/Set/Copy/CopyInverted/Noop/Invert/And/Nand/Or/Nor/Xor/Equiv/AndReverse/AndInverted/OrReverse/OrInverted) | | `ToD3D12(FilterMode)` | `FilterMode` | `D3D12_FILTER` | 过滤器模式转换 (Point/Linear/Anisotropic/ComparisonPoint/ComparisonLinear/ComparisonAnisotropic) | | `ToD3D12(TextureAddressMode)` | `TextureAddressMode` | `D3D12_TEXTURE_ADDRESS_MODE` | 纹理寻址模式转换 (Wrap/Mirror/Clamp/Border/MirrorOnce) | | `ToD3D12(BorderColor)` | `BorderColor` | `D3D12_STATIC_BORDER_COLOR` | 边框颜色转换 (TransparentBlack/OpaqueBlack/OpaqueWhite) | | `ToD3D12(ShaderVisibility)` | `ShaderVisibility` | `D3D12_SHADER_VISIBILITY` | Shader 可见性转换 (All/Vertex/Hull/Domain/Geometry/Pixel/Amplification/Mesh) | | `ToD3D12(Format)` | `Format` | `DXGI_FORMAT` | 格式转换 (Unknown/R8_UNorm/R8G8_UNorm/R8G8B8A8_UNorm/R16G16B16A16_Float/R32G32B32A32_Float/R16_Float/R32_Float/D16_UNorm/D24_UNorm_S8_UInt/D32_Float/BC1-7_UNorm/BC6H_UF16/R32G32B32A32_UInt/R32_UInt) | | `ToDXGI(Format)` | `Format` | `DXGI_FORMAT` | DXGI 格式转换(内部调用 `ToD3D12(Format)`) | | `ToD3D12(ResourceStates)` | `ResourceStates` | `D3D12_RESOURCE_STATES` | 资源状态转换 (Common/VertexAndConstantBuffer/IndexBuffer/RenderTarget/UnorderedAccess/DepthWrite/DepthRead/NonPixelShaderResource/PixelShaderResource/CopySrc/CopyDst/Present/GenericRead) | | `ToD3D12(HeapType)` | `HeapType` | `D3D12_HEAP_TYPE` | 堆类型转换 (Default/Upload/Readback) | | `ToD3D12(PrimitiveTopology)` | `PrimitiveTopology` | `D3D12_PRIMITIVE_TOPOLOGY_TYPE` | 图元拓扑类型转换 (PointList/Line*/Triangle*/PatchList) | | `ToD3D12Topology(PrimitiveTopology)` | `PrimitiveTopology` | `D3D12_PRIMITIVE_TOPOLOGY` | 图元拓扑详细转换(包含控制点信息) | | `ToD3D12(DescriptorHeapType)` | `DescriptorHeapType` | `D3D12_DESCRIPTOR_HEAP_TYPE` | 描述符堆类型转换 (CBV_SRV_UAV/Sampler/RTV/DSV) | | `ToD3D12(QueryType)` | `QueryType` | `D3D12_QUERY_TYPE` | 查询类型转换 (Occlusion/Timestamp/PipelineStatistics) | | `ToD3D12(RootParameterType)` | `RootParameterType` | `D3D12_ROOT_PARAMETER_TYPE` | 根参数类型转换 (DescriptorTable/Constants/CBV/SRV/UAV) | | `ToD3D12(TextureType)` | `TextureType` | `D3D12_RESOURCE_DIMENSION` | 纹理类型维度转换 (Texture1D/Texture2D*/Texture3D) | | `ToD3D12(CommandQueueType)` | `CommandQueueType` | `D3D12_COMMAND_LIST_TYPE` | 命令列表类型转换 (Direct/Compute/Copy) | ## 使用示例 ### 渲染状态设置 ```cpp #include void SetupRenderState(XCEngine::RHI::FillMode fill, XCEngine::RHI::CullMode cull) { D3D12_FILL_MODE d3dFill = XCEngine::RHI::ToD3D12(fill); D3D12_CULL_MODE d3dCull = XCEngine::RHI::ToD3D12(cull); } ``` ### 纹理采样器配置 ```cpp #include void ConfigureSampler(XCEngine::RHI::FilterMode filterMode, XCEngine::RHI::TextureAddressMode addressMode) { D3D12_FILTER filter = XCEngine::RHI::ToD3D12(filterMode); D3D12_TEXTURE_ADDRESS_MODE address = XCEngine::RHI::ToD3D12(addressMode); } ``` ### 资源状态转换 ```cpp #include void TransitionResource(XCEngine::RHI::ResourceStates state) { D3D12_RESOURCE_STATES d3dState = XCEngine::RHI::ToD3D12(state); } ``` ## 相关文档 - [D3D12 后端概览](../d3d12.md) - [D3D12Types](../../types/types.md) - 类型转换 - [RHI 枚举定义](../../enums/enums.md) - RHI 抽象层枚举定义