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
Se a função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um
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 |