Files
XCEngine/docs/api/rhi/d3d12/enums/enums.md
2026-03-20 02:35:45 +08:00

79 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <XCEngine/RHI/D3D12/D3D12Enum.h>
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 <XCEngine/RHI/D3D12/D3D12Enum.h>
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 <XCEngine/RHI/D3D12/D3D12Enum.h>
void TransitionResource(XCEngine::RHI::ResourceStates state) {
D3D12_RESOURCE_STATES d3dState = XCEngine::RHI::ToD3D12(state);
}
```
## 相关文档
- [D3D12 后端概览](../d3d12.md)
- [D3D12Types](../../types/types.md) - 类型转换
- [RHI 枚举定义](../../../threading/task-system-config/README.md) - RHI 抽象层枚举定义