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 fa sì che le attese di isolamento vengano pianificate in questa coda. È quindi possibile accodare altre 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 erroreHRESULT.

Commenti

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

Esistono alcune restrizioni su ciò che può essere annullato: 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::CreateWrappedResource , nonché le risorse create tramite ID3D11Device::CreateTexture2D.

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

È anche possibile usare UnwrapUnderlyingResource per annullare il wrapping di un buffer swapchain. È inoltre 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 l'utilizzo del livello di traduzione (tramite una delle due versioni dell'API) mentre la risorsa è estratta. Controllare di nuovo la risorsa (nota anche come restituzione della risorsa) con ID3D11On12Device2::ReturnUnderlyingResource.

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

Requisiti

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

Vedi anche