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

类型:ID3D12CommandQueue*

应用程序计划在其中使用资源的命令队列。 访问资源的任何挂起工作都会导致在此队列上计划围栏等待。 然后,可以对此队列进行进一步的排队工作,包括调用方拥有的围栏上的信号。

[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

另请参阅