Compartilhar via


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

Desembrulhar um objeto de recurso direct3D 11 e recuperá-lo 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: nulo**

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

Valor de retorno

Tipo: HRESULT

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

Observações

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 método UnwrapUnderlyingResource para desembrulhar recursos criados por meio do método ID3D111On12Device::CreateWrappedResource, bem como recursos criados por meio de 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 de outra forma usando o recurso).

Desembrulhar um recurso verifica o recurso da camada de tradução Direct3D11On12. Talvez você não agende qualquer uso de camada de tradução (por meio de qualquer 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 é liberado e pode agendar o trabalho da GPU. Você deve liberar depois de chamar UnwrapUnderlyingResource se aguardar externamente a conclusão.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 10, versão 2004 (10.0; Build 19041)
servidor com suporte mínimo Windows Server, versão 2004 (10.0; Build 19041)
cabeçalho d3d11on12.h
biblioteca D3D11.lib
de DLL D3D11.dll

Consulte também