在 Win32 API 的 Direct3D 12 中,D3D12_DESCRIPTOR_HEAP_FLAGS 枚举用于表示描述符堆(Descriptor Heap)的标志。以下是该枚举的定义:
typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS {
  D3D12_DESCRIPTOR_HEAP_FLAG_NONE                       = 0,
  D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE             = 0x1,
  D3D12_DESCRIPTOR_HEAP_FLAG_RENDER_TARGET_VIEW        = 0x2,
  D3D12_DESCRIPTOR_HEAP_FLAG_DEPTH_STENCIL_VIEW        = 0x4,
  D3D12_DESCRIPTOR_HEAP_FLAG_CPU_VISIBLE               = 0x8,
  D3D12_DESCRIPTOR_HEAP_FLAG_LARGE_PAGES               = 0x20,
  D3D12_DESCRIPTOR_HEAP_FLAG_NON_RT_DS_TEXTURES        = 0x40,
  D3D12_DESCRIPTOR_HEAP_FLAG_PER_SHADER_VISIBLE        = 0x80,
  D3D12_DESCRIPTOR_HEAP_FLAG_SPARSE_BINDING            = 0x200,
  D3D12_DESCRIPTOR_HEAP_FLAG_PER_DRAW                  = 0x400
} D3D12_DESCRIPTOR_HEAP_FLAGS;

这个枚举包含了以下成员:

  •  D3D12_DESCRIPTOR_HEAP_FLAG_NONE:表示没有特殊标志。


  •  D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE:表示描述符堆是可由着色器访问的。


  •  D3D12_DESCRIPTOR_HEAP_FLAG_RENDER_TARGET_VIEW:表示描述符堆用于渲染目标视图。


  •  D3D12_DESCRIPTOR_HEAP_FLAG_DEPTH_STENCIL_VIEW:表示描述符堆用于深度模板视图。


  •  D3D12_DESCRIPTOR_HEAP_FLAG_CPU_VISIBLE:表示描述符堆是可由 CPU 访问的。


  •  D3D12_DESCRIPTOR_HEAP_FLAG_LARGE_PAGES:表示使用大页(large page)。


  •  D3D12_DESCRIPTOR_HEAP_FLAG_NON_RT_DS_TEXTURES:表示描述符堆用于非渲染目标和非深度模板的纹理。


  •  D3D12_DESCRIPTOR_HEAP_FLAG_PER_SHADER_VISIBLE:表示每个着色器可见堆(per-shader-visible heap)。


  •  D3D12_DESCRIPTOR_HEAP_FLAG_SPARSE_BINDING:表示支持稀疏绑定(sparse binding)。


  •  D3D12_DESCRIPTOR_HEAP_FLAG_PER_DRAW:表示每个绘制调用堆(per-draw-call heap)。


这些标志用于在创建描述符堆时指定描述符堆的一些属性和用途。选择适当的标志可以根据应用程序的需求优化描述符堆的性能和使用方式。


转载请注明出处:http://www.zyzy.cn/article/detail/26057/Win32 API/D3d12.h/D3D12_DESCRIPTOR_HEAP_FLAGS