在 Direct3D 12 API 中,D3D12_HEAP_FLAGS 枚举用于指定堆(Heap)的标志,这些标志用于描述堆的一些特性和属性。堆是用于存储资源的内存区域,包括缓冲区和纹理等。

以下是 D3D12_HEAP_FLAGS 枚举的可能值:
typedef enum D3D12_HEAP_FLAGS
{
    D3D12_HEAP_FLAG_NONE = 0,
    D3D12_HEAP_FLAG_SHARED = 0x1,
    D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4,
    D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8,
    D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20,
    D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
    D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80,
    D3D12_HEAP_FLAG_HARDWARE_PROTECTED = 0x100,
    D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH = 0x200,
    D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS = 0x400,
    D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT = 0x800,
    D3D12_HEAP_FLAG_CREATE_NOT_ZEROED = 0x1000,
    D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0,
    D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xC0,
    D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x40,
    D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x80,
    D3D12_HEAP_FLAG_ALLOW_STANDARD_TEXTURES = 0xC0,
    D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES_PLACED = 0x100,
    D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES_PLACED = 0x200,
    D3D12_HEAP_FLAG_ALLOW_NON_RT_DS_TEXTURES_ONLY = 0x300,
    D3D12_HEAP_FLAG_ALLOW_RT_DS_TEXTURES_ONLY = 0x400,
    D3D12_HEAP_FLAG_ALLOW_ALL_TEXTURES_AND_BUFFERS = 0xC0,
} D3D12_HEAP_FLAGS;

这些标志包括:

  •  D3D12_HEAP_FLAG_SHARED: 表示堆是共享的,可以被多个进程使用。

  •  D3D12_HEAP_FLAG_DENY_BUFFERS: 阻止堆用于存储缓冲区。

  •  D3D12_HEAP_FLAG_ALLOW_DISPLAY: 允许堆用于显示设备。

  •  D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER: 表示堆可以跨多个适配器共享。

  •  D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES: 阻止堆用于存储渲染目标和深度/模板纹理。

  •  D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES: 阻止堆用于存储非渲染目标和非深度/模板纹理。

  •  D3D12_HEAP_FLAG_HARDWARE_PROTECTED: 表示堆受到硬件保护。

  •  等等。


这些标志允许你根据应用程序的需要,灵活地配置堆的属性。在创建堆时,可以通过将这些标志传递给相关的函数来指定堆的特性。


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