Condividi tramite


Metodo ID3D11On12Device2::UnwrapUnderlyingResource (d3d11on12.h)

Annulla il wrapping di un oggetto risorsa Direct3D 11 e lo recupera come oggetto risorsa Direct3D 12.

Sintassi

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

Parametri

[in] pResource11

Tipo: ID3D11Resource*

Oggetto risorsa Direct3D 11 da annullare.

[in] pCommandQueue

Tipo: ID3D12CommandQueue*

Coda dei comandi in cui l'applicazione prevede di usare la risorsa. Qualsiasi lavoro in sospeso che accede alla risorsa causa la pianificazione delle attese di isolamento in questa coda. È quindi possibile accodare ulteriori operazioni su questa coda, incluso un segnale su un recinto di proprietà del chiamante.

[in] riid

Tipo: REFIID

Riferimento all'identificatore univoco globale (GUID) dell'interfaccia da restituire in ppvResource12.

[out] ppvResource12

Tipo: void**

Puntatore a un blocco di memoria che riceve un puntatore alla risorsa Direct3D 12.

Valore restituito

Tipo: HRESULT

Se la funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT.

Osservazioni

La risorsa viene passata a D3D12_RESOURCE_STATE_COMMON (se non è già in questo stato) e le attese appropriate vengono inserite nella coda dei comandi (pCommandQueue).

Esistono alcune restrizioni su ciò che è possibile rimuovere dal wrapping: nessuna risorsa mutex con chiave, nessuna risorsa compatibile con GDI e nessun buffer. Tuttavia, è possibile usare unwrapUnderlyingResource per annullare il wrapping delle risorse create tramite il metodo ID3D11On12Device::CreateWrappedRe source, nonché le risorse create tramite ID3D11Device::CreateTexture2D.

In generale, è necessario restituire l'oggetto a Direct3D11on12 prima di usarlo di nuovo in Direct3D 11 (vedere ID3D11On12Device2::ReturnUnderlyingResource).

È anche possibile usare UnwrapUnderlyingResource per annullare il wrapping di un buffer swapchain. È anche necessario restituire la risorsa a Direct3D11on12 prima di chiamare Present (o in caso contrario, usando la risorsa).

Il wrapping di una risorsa estrae la risorsa dal livello di conversione Direct3D11On12. Non è possibile pianificare alcun utilizzo del livello di traduzione (tramite una delle due versioni dell'API) mentre la risorsa viene estratta. Controllare nuovamente la risorsa (nota anche come restituendo risorsa) con ID3D11On12Device2::ReturnUnderlyingResource.

l' UnwrapUnderlyingResource non viene scaricato e potrebbe pianificare il lavoro della GPU. È consigliabile scaricare dopo aver chiamato UnwrapUnderlyingResource se si attende esternamente il completamento.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10, versione 2004 (10.0; Build 19041)
server minimo supportato Windows Server, versione 2004 (10.0; Build 19041)
intestazione d3d11on12.h
libreria D3D11.lib
dll D3D11.dll

Vedere anche