ID3D11On12Device2::UnwrapUnderlyingResource 方法 (d3d11on12.h)
解包 Direct3D 11 资源对象,并将其检索为 Direct3D 12 资源对象。
语法
HRESULT UnwrapUnderlyingResource(
[in] ID3D11Resource *pResource11,
[in] ID3D12CommandQueue *pCommandQueue,
[in] REFIID riid,
[out] void **ppvResource12
);
参数
[in] pResource11
类型:ID3D11Resource*
要解包的 Direct3D 11 资源对象。
[in] pCommandQueue
应用程序计划在其中使用资源的命令队列。 访问资源的任何挂起工作都会导致在此队列上计划围栏等待。 然后,可以对此队列进行进一步的排队工作,包括调用方拥有的围栏上的信号。
[in] riid
类型:REFIID
对要在 ppvResource12
中返回的接口的全局唯一标识符(GUID)的引用。
[out] ppvResource12
类型:void**
指向接收指向 Direct3D 12 资源的指针的内存块的指针。
返回值
类型:HRESULT
如果函数成功,则返回 S_OK。 否则,它将返回 HRESULT错误代码。
言论
资源将转换为 D3D12_RESOURCE_STATE_COMMON(如果它尚未处于该状态),并将适当的等待插入命令队列(pCommandQueue)。
可以解包的内容有一些限制:没有键式互斥体资源、没有与 GDI 兼容的资源,也没有缓冲区。 但是,可以使用 UnwrapUnderlyingResource 来解包通过 ID3D11On12Device::CreateWrappedResource 方法创建的资源,以及通过 ID3D11Device::CreateTexture2D创建的资源。
通常,必须先将对象返回到 Direct3D11on12,然后再在 Direct3D 11 中使用它(请参阅 ID3D11On12Device2::ReturnUnderlyingResource)。
还可以使用 UnwrapUnderlyingResource 解包交换链缓冲区。 还必须将资源返回到 Direct3D11on12,然后才能调用 演示(否则使用资源)。
取消包装资源会从 Direct3D11On12 转换层中签出资源。 签出资源时,可能无法计划任何转换层使用情况(通过任一版本的 API)。使用 ID3D11On12Device2::ReturnUnderlyingResource检查回资源(也称为 返回 资源)。
UnwrapUnderlyingResource 不刷新,并且可能会计划 GPU 工作。 如果在外部等待完成,则应在调用 UnwrapUnderlyingResource 后刷新。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 10 版本 2004 (10.0;内部版本 19041) |
支持的最低服务器 | Windows Server 版本 2004 (10.0;内部版本 19041) |
标头 | d3d11on12.h |
库 | D3D11.lib |
DLL | D3D11.dll |