Share via


Método ID3D11On12Device2::UnwrapUnderlyingResource (d3d11on12.h)

Desembrulha um objeto de recurso Direct3D 11 e o recupera como um objeto de recurso direct3D 12.

Sintaxe

HRESULT UnwrapUnderlyingResource(
  [in]  ID3D11Resource     *pResource11,
  [in]  ID3D12CommandQueue *pCommandQueue,
  [in]  REFIID             riid,
  [out] void               **ppvResource12
);

Parâmetros

[in] pResource11

Tipo: ID3D11Resource*

O objeto de recurso Direct3D 11 a ser desembrulhado.

[in] pCommandQueue

Tipo: ID3D12CommandQueue*

A fila de comandos na qual seu aplicativo planeja usar o recurso. Qualquer trabalho pendente que acesse o recurso faz com que as esperas de cerca sejam agendadas nessa fila. Em seguida, você pode enfileirar mais trabalho nessa fila, incluindo um sinal em uma cerca de propriedade do chamador.

[in] riid

Tipo: REFIID

Uma referência ao GUID (identificador global exclusivo) da interface que você deseja retornar no ppvResource12.

[out] ppvResource12

Tipo: void**

Um ponteiro para um bloco de memória que recebe um ponteiro para o recurso Direct3D 12.

Retornar valor

Tipo: HRESULT

Se a função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erroHRESULT.

Comentários

O recurso é transferido para D3D12_RESOURCE_STATE_COMMON (se ainda não estava nesse estado) e as esperas apropriadas são inseridas na fila de comandos (pCommandQueue).

Há algumas restrições sobre o que pode ser desembrulhado: nenhum recurso mutex chaveado, nenhum recurso compatível com GDI e nenhum buffer. No entanto, você pode usar UnwrapUnderlyingResource para desembrulhar recursos criados por meio do método ID3D11On12Device::CreateWrappedResource , bem como recursos criados por meio do método ID3D11Device::CreateTexture2D.

Em geral, você deve retornar o objeto para Direct3D11on12 antes de usá-lo novamente no Direct3D 11 (consulte ID3D11On12Device2::ReturnUnderlyingResource).

Você também pode usar UnwrapUnderlyingResource para desembrulhar um buffer de swapchain. Você também deve retornar o recurso para Direct3D11on12 antes de chamar Present (ou usar o recurso).

Desembrulhar um recurso verifica o recurso da camada de tradução Direct3D11On12. Você não pode agendar nenhum uso de camada de tradução (por meio de nenhuma versão da API) enquanto o recurso está em check-out. Verifique o recurso de volta (também conhecido como retornando o recurso) com ID3D11On12Device2::ReturnUnderlyingResource.

UnwrapUnderlyingResource não libera e pode agendar o trabalho de GPU. Você deverá liberar depois de chamar UnwrapUnderlyingResource se aguardar externamente a conclusão.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 2004 (10.0; Build 19041)
Servidor mínimo com suporte Windows Server, versão 2004 (10.0; Build 19041)
Cabeçalho d3d11on12.h
Biblioteca D3D11.lib
DLL D3D11.dll

Confira também