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

4.2 KiB
Raw Blame History

D3D12Common

命名空间: XCEngine::RHI

类型: inline 函数集合 (header-only)

描述: D3D12 通用辅助函数集合,提供描述符大小查询、资源屏障创建、格式支持检查、视图创建等功能。所有函数均为 inline 函数,封装自 DirectX 12 原生 API。

概述

D3D12Common 是 D3D12 后端的工具函数模块,封装了 DirectX 12 常用的辅助功能,包括:

  • 描述符大小查询: 封装 ID3D12Device::GetDescriptorHandleIncrementSize,提供各类描述符的增量大小
  • 资源屏障创建: 封装 D3D12_RESOURCE_BARRIER 的三种类型Transition、UAV、Aliasing
  • 格式支持检查: 封装 ID3D12Device::CheckFeatureSupport,检查格式是否支持特定用途
  • 视图创建: 封装 D3D12_VERTEX_BUFFER_VIEW、D3D12_INDEX_BUFFER_VIEW、D3D12_VIEWPORT 等创建
  • 描述符句柄运算: 提供描述符句柄的偏移计算

这些函数均为无状态的纯函数,设计用于简化 D3D12 常见操作的代码编写。

函数列表

描述符大小

函数 描述
GetDescriptorHandleIncrementSize 获取指定描述符堆类型的增量大小
GetRTVDescriptorSize 获取 RTV 描述符大小
GetDSVDescriptorSize 获取 DSV 描述符大小
GetCBV_SRV_UAVDescriptorSize 获取 CBV/SRV/UAV 描述符大小
GetSamplerDescriptorSize 获取 Sampler 描述符大小

屏障创建

函数 描述
CreateTransitionBarrier 创建资源状态转换屏障
CreateUAVBarrier 创建 UAV 屏障
CreateAliasingBarrier 创建别名化屏障

格式支持

函数 描述
CheckFormatSupport 检查格式是否支持指定功能
IsRenderTargetFormatSupported 检查是否支持作为渲染目标
IsDepthStencilFormatSupported 检查是否支持作为深度模板
IsShaderResourceFormatSupported 检查是否支持作为着色器资源
IsTextureFormatSupported 检查是否支持作为纹理

清除值创建

函数 描述
CreateRenderTargetClearValue 创建渲染目标清除值
CreateDepthStencilClearValue 创建深度模板清除值

视口和裁剪矩形

函数 描述
CreateViewport 创建视口结构
CreateScissorRect 创建裁剪矩形

缓冲区视图

函数 描述
CreateVertexBufferView 创建顶点缓冲区视图
CreateIndexBufferView 创建索引缓冲区视图

描述符句柄运算

函数 描述
GetCPUDescriptorHandle 计算偏移后的 CPU 描述符句柄
GetGPUDescriptorHandle 计算偏移后的 GPU 描述符句柄

使用示例

#include <XCEngine/RHI/D3D12/D3D12Common.h>

using namespace XCEngine::RHI;

// 获取描述符大小
ID3D12Device* device = ...;
UINT rtvSize = GetRTVDescriptorSize(device);

// 创建资源屏障
D3D12_RESOURCE_BARRIER barrier = CreateTransitionBarrier(
    resource, 
    D3D12_RESOURCE_STATE_RENDER_TARGET, 
    D3D12_RESOURCE_STATE_COMMON
);

// 检查格式支持
if (IsTextureFormatSupported(device, DXGI_FORMAT_BC1_UNORM)) {
    // 使用压缩纹理
}

// 创建视口
D3D12_VIEWPORT viewport = CreateViewport(1280.0f, 720.0f);

相关文档