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

1.3 KiB

D3D12DescriptorHeap::Initialize

bool Initialize(ID3D12Device* device, DescriptorHeapType type, uint32_t numDescriptors, bool shaderVisible = false);

直接使用 D3D12 设备创描述符堆。这是主要初始化方法,会创建底层的 ID3D12DescriptorHeap COM 对象。

参数:

  • device - D3D12 设备指针,不得为 nullptr
  • type - 描述符堆类型,决定堆中存储的描述符种类
  • numDescriptors - 描述符数量,必须大于 0
  • shaderVisible - 是否创建为 shader visible 模式。shader visible 的堆可绑定到命令列表供 shader 访问,但会增加 GPU 访问开销

返回: 是否初始化成功。失败时返回 false,可能原因包括:

  • 设备指针无效
  • 描述符数量为 0
  • D3D12 API 创建堆失败

复杂度: O(1)

示例

ID3D12Device* device = ...;

// 创建不可见的 CPU 描述符堆
D3D12DescriptorHeap cpuHeap;
cpuHeap.Initialize(device, DescriptorHeapType::CBV_SRV_UAV, 64, false);

// 创建 GPU 可见的描述符堆
D3D12DescriptorHeap gpuHeap;
gpuHeap.Initialize(device, DescriptorHeapType::CBV_SRV_UAV, 256, true);

相关文档