D3D11_RESOURCE_MISC_FLAG 枚举 (d3d11.h)
标识资源的选项。
语法
typedef enum D3D11_RESOURCE_MISC_FLAG {
D3D11_RESOURCE_MISC_GENERATE_MIPS = 0x1L,
D3D11_RESOURCE_MISC_SHARED = 0x2L,
D3D11_RESOURCE_MISC_TEXTURECUBE = 0x4L,
D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS = 0x10L,
D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS = 0x20L,
D3D11_RESOURCE_MISC_BUFFER_STRUCTURED = 0x40L,
D3D11_RESOURCE_MISC_RESOURCE_CLAMP = 0x80L,
D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX = 0x100L,
D3D11_RESOURCE_MISC_GDI_COMPATIBLE = 0x200L,
D3D11_RESOURCE_MISC_SHARED_NTHANDLE = 0x800L,
D3D11_RESOURCE_MISC_RESTRICTED_CONTENT = 0x1000L,
D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE = 0x2000L,
D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER = 0x4000L,
D3D11_RESOURCE_MISC_GUARDED = 0x8000L,
D3D11_RESOURCE_MISC_TILE_POOL = 0x20000L,
D3D11_RESOURCE_MISC_TILED = 0x40000L,
D3D11_RESOURCE_MISC_HW_PROTECTED = 0x80000L,
D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE,
D3D11_RESOURCE_MISC_SHARED_EXCLUSIVE_WRITER,
D3D11_RESOURCE_MISC_NO_SHADER_ACCESS
} ;
常量
D3D11_RESOURCE_MISC_GENERATE_MIPS 值: 0x1L 在纹理资源上使用 ID3D11DeviceContext::GenerateMips 启用 MIP 贴图生成。 必须使用 绑定标志 创建资源,这些标志指定资源是呈现目标和着色器资源。 |
D3D11_RESOURCE_MISC_SHARED 值: 0x2L 启用两个或多个 Direct3D 设备之间的资源数据共享。 唯一可以共享的资源是 2D 非误入式纹理。 D3D11_RESOURCE_MISC_SHARED 和 D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX 是相互排斥的。 WARP 和 REF 设备不支持共享资源。 如果尝试在 WARP 或 REF 设备上使用此标志创建资源,create 方法将返回 E_OUTOFMEMORY 错误代码。
注意从Windows 8开始,WARP 设备完全支持共享资源。
注意从Windows 8开始,建议改为使用D3D11_RESOURCE_MISC_SHARED_NTHANDLE和D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX标志的组合在两个或多个 Direct3D 设备之间启用资源数据共享。 |
D3D11_RESOURCE_MISC_TEXTURECUBE 值: 0x4L 将资源设置为从包含 6 个纹理的 Texture2DArray 创建的立方体纹理。 |
D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS 值: 0x10L 启用 GPU 生成的内容的实例化。 |
D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS 值: 0x20L 启用资源作为 字节地址缓冲区。 |
D3D11_RESOURCE_MISC_BUFFER_STRUCTURED 值: 0x40L 将资源作为 结构化缓冲区启用。 |
D3D11_RESOURCE_MISC_RESOURCE_CLAMP 值: 0x80L 启用具有 MIP 映射固定的资源,以便与 ID3D11DeviceContext::SetResourceMinLOD 一起使用。 |
D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX 值: 0x100L 允许使用 IDXGIKeyedMutex::AcquireSync 和 同步资源 IDXGIKeyedMutex::ReleaseSync Api。 以下 Direct3D 11 资源创建 API(采用 D3D11_RESOURCE_MISC_FLAG 参数)已扩展为支持新标志。
如果在设置了 D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX 标志的情况下调用这些方法中的任何一个,则返回的接口将支持 IDXGIKeyedMutex 接口。 可以使用 IUnknown::QueryInterface 从资源检索指向 IDXGIKeyedMutex 接口的指针。 IDXGIKeyedMutex 接口实现 IDXGIKeyedMutex::AcquireSync 和 IDXGIKeyedMutex::ReleaseSync API,以同步对图面的访问。 创建图面的设备以及使用 OpenSharedResource 打开图面的任何其他设备在向图面发出任何呈现命令之前,必须调用 IDXGIKeyedMutex::AcquireSync 。 当这些设备完成呈现时,它们必须调用 IDXGIKeyedMutex::ReleaseSync。 D3D11_RESOURCE_MISC_SHARED 和 D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX 是相互排斥的。 WARP 和 REF 设备不支持共享资源。 如果尝试在 WARP 或 REF 设备上使用此标志创建资源,create 方法将返回 E_OUTOFMEMORY 错误代码。
注意从Windows 8开始,WARP 设备完全支持共享资源。 |
D3D11_RESOURCE_MISC_GDI_COMPATIBLE 值: 0x200L 启用与 GDI 兼容的资源。 必须在与 GDI 一起使用的图面上设置 D3D11_RESOURCE_MISC_GDI_COMPATIBLE 标志。 设置 D3D11_RESOURCE_MISC_GDI_COMPATIBLE 标志允许通过 IDXGISurface1::GetDC 在图面上呈现 GDI。 在创建纹理或在交换链中使用该纹理时,请考虑以下使用D3D11_RESOURCE_MISC_GDI_COMPATIBLE的编程提示:
|
D3D11_RESOURCE_MISC_SHARED_NTHANDLE 值: 0x800L 设置此标志,以便在创建共享资源时启用 NT HANDLE 值。 启用此标志后,将弃用现有 HANDLE 值。 值指定新的共享资源类型,该类型指示运行时对共享资源使用 NT HANDLE 值。 然后,运行时必须确认共享资源在指定 功能级别的所有硬件上正常工作。 如果不设置此标志,运行时不会严格验证共享资源参数 (即格式、标志、使用情况等) 。 当运行时不验证共享资源参数时,大部分 Direct3D API 的行为可能未定义,并且可能因驱动程序而异。 Direct3D 11 及更早版本: 在 Direct3D 11.1 之前不支持此值。 |
D3D11_RESOURCE_MISC_RESTRICTED_CONTENT 值: 0x1000L 设置此标志以指示资源可能包含受保护的内容;因此,仅当驱动程序和硬件支持内容保护时,操作系统才应使用该资源。 如果驱动程序和硬件不支持内容保护,并且你尝试使用此标志创建资源,则资源创建将失败。 Direct3D 11: 在 Direct3D 11.1 之前不支持此值。 |
D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE 值: 0x2000L 设置此标志以指示操作系统限制对共享图面的访问。 仅当创建共享图面时,才能将此标志与 D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER 标志一起使用。 创建共享资源的过程始终可以打开共享资源。 Direct3D 11: 在 Direct3D 11.1 之前不支持此值。 |
D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER 值: 0x4000L 设置此标志以指示驱动程序限制对共享图面的访问。 仅当创建共享图面时,才能将此标志与 D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE 标志结合使用。 创建共享资源的过程始终可以打开共享资源。 Direct3D 11: 在 Direct3D 11.1 之前不支持此值。 |
D3D11_RESOURCE_MISC_GUARDED 值: 0x8000L 设置此标志以指示资源受到保护。 此类资源由 IDCompositionSurface::BeginDraw (DirectComposition) 和 ISurfaceImageSourceNative::BeginDraw (Windows 运行时) API 返回。 对于这些 API,可在图面上提供感兴趣的区域 (ROI) 进行更新。 此图面与 MRT) (多个渲染目标不兼容。 受保护的资源会自动限制对与上述某个 API 相关的区域的所有写入。 此外,资源通过以下限制强制访问 ROI:
Direct3D 11: 在 Direct3D 11.1 之前不支持此值。 |
D3D11_RESOURCE_MISC_TILE_POOL 值: 0x20000L 设置此标志以指示资源是磁贴池。 Direct3D 11: 在 Direct3D 11.2 之前不支持此值。 |
D3D11_RESOURCE_MISC_TILED 值: 0x40000L 设置此标志以指示资源是平铺资源。 Direct3D 11: 在 Direct3D 11.2 之前不支持此值。 |
D3D11_RESOURCE_MISC_HW_PROTECTED 值: 0x80000L 设置此标志以指示应创建资源,使其受硬件保护。 如果不支持硬件内容保护,则资源创建将失败。 此标志具有以下限制:
注意 使用此标志创建纹理并不自动保证会为基础分配启用硬件保护。 某些实现要求在保证保护之前先初始化 DRM 组件。 注意从Windows 10开始支持此枚举值。 |
D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE 使资源能够使用 可显示表面 功能。 必须将 D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE 与 D3D11_RESOURCE_MISC_SHARED 和 D3D11_RESOURCE_MISC_SHARED_NTHANDLE 结合使用。 |
D3D11_RESOURCE_MISC_SHARED_EXCLUSIVE_WRITER TBD |
注解
此枚举用于 D3D11_BUFFER_DESC、 D3D11_TEXTURE1D_DESC、 D3D11_TEXTURE2D_DESCD3D11_TEXTURE3D_DESC。
这些标志可以按位 OR 组合。
创建具有 D3D11_CPU_ACCESS 标志的资源时,无法使用 D3D11_RESOURCE_MISC_FLAG 。
要求
要求 | 值 |
---|---|
Header | d3d11.h |