2.5 KiB
2.5 KiB
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();
相关文档
- D3D12 后端总览
- RHIDescriptorPool - 抽象描述符池接口
- D3D12Enum - D3D12 类型枚举映射