5.0 KiB
5.0 KiB
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) |
使用示例
渲染状态设置
#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);
}
纹理采样器配置
#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);
}
资源状态转换
#include <XCEngine/RHI/D3D12/D3D12Enum.h>
void TransitionResource(XCEngine::RHI::ResourceStates state) {
D3D12_RESOURCE_STATES d3dState = XCEngine::RHI::ToD3D12(state);
}
相关文档
- D3D12 后端概览
- D3D12Types - 类型转换
- RHI 枚举定义 - RHI 抽象层枚举定义