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

5.0 KiB
Raw Blame History

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);
}

相关文档