Files
XCEngine/docs/api/rhi/d3d12/descriptor-heap/descriptor-heap.md

2.5 KiB
Raw Blame History

D3D12DescriptorHeap

命名空间: XCEngine::RHI

继承自: RHIDescriptorPool

描述: DirectX 12 描述符堆的 D3D12 实现,继承自 RHIDescriptorPool。描述符堆是 D3D12 中用于存储描述符CBV/SRV/UAV/Sampler的内存块支持 CPU 可访问和 GPU 可访问两种模式。

概述:

D3D12DescriptorHeap 封装了 D3D12 的描述符堆资源,提供描述符的分配、句柄计算和资源管理功能。描述符堆类型包括:

  • CBV_SRV_UAV - 常量缓冲区、Shader资源和无序访问视图
  • SAMPLER - 采样器

描述符堆可以标记为 shaderVisible,使其可被 GPU shader 访问。仅当需要绑定到命令列表时才应使用 shader visible 堆。

公共方法

方法 描述
D3D12DescriptorHeap 构造函数
Initialize 从描述符初始化
Initialize(ID3D12Device*,...) 直接初始化
Shutdown 关闭描述符堆
GetDescriptorHeap 获取 D3D12 描述符堆
GetCPUDescriptorHandle 获取 CPU 描述符句柄
GetGPUDescriptorHandle 获取 GPU 描述符句柄
GetDescriptorCount 获取描述符数量
GetType 获取描述符类型
GetDescriptorSize 获取描述符大小
GetCPUDescriptorHandleForHeapStart 获取堆起始 CPU 句柄
GetGPUDescriptorHandleForHeapStart 获取堆起始 GPU 句柄
GetNativeHandle 获取原生句柄
CreateDesc 创建描述符(静态)

使用示例

#include "XCEngine/RHI/D3D12/D3D12DescriptorHeap.h"

using namespace XCEngine::RHI;

// 创建设备
ID3D12Device* device = ...;

// 创建 CBV/SRV/UAV 描述符堆
D3D12DescriptorHeap heap;
heap.Initialize(device, DescriptorHeapType::CBV_SRV_UAV, 256, true);

// 获取描述符句柄
CPUDescriptorHandle cpuHandle = heap.GetCPUDescriptorHandle(0);
GPUDescriptorHandle gpuHandle = heap.GetGPUDescriptorHandle(0);

// 关闭
heap.Shutdown();

相关文档