Freigeben über


ID3D11On12Device2::UnwrapUnderlyingResource-Methode (d3d11on12.h)

Entpackt ein Direct3D 11-Ressourcenobjekt und ruft es als Direct3D 12-Ressourcenobjekt ab.

Syntax

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

Parameter

[in] pResource11

Typ: ID3D11Resource-*

Das Direct3D 11-Ressourcenobjekt zum Entpacken.

[in] pCommandQueue

Typ: ID3D12CommandQueue*

Die Befehlswarteschlange, in der Ihre Anwendung die Ressource verwenden möchte. Alle ausstehenden Arbeiten, die auf die Ressource zugreifen, führen dazu, dass der Zaun in dieser Warteschlange geplant wird. Sie können dann weitere Arbeiten an dieser Warteschleife in die Warteschlange stellen, einschließlich eines Signals auf einem Anrufer-eigenen Zaun.

[in] riid

Typ: REFIID-

Ein Verweis auf die GUID (Globally Unique Identifier) der Schnittstelle, die Sie in ppvResource12zurückgeben möchten.

[out] ppvResource12

Typ: void**

Ein Zeiger auf einen Speicherblock, der einen Zeiger auf die Direct3D 12-Ressource empfängt.

Rückgabewert

Typ: HRESULT-

Wenn die Funktion erfolgreich ist, wird S_OKzurückgegeben. Andernfalls wird ein HRESULT-Fehlercodezurückgegeben.

Bemerkungen

Die Ressource wird auf D3D12_RESOURCE_STATE_COMMON umgestellt (wenn sie noch nicht in diesem Zustand war), und entsprechende Wartezeiten werden in die Befehlswarteschlange eingefügt (pCommandQueue).

Es gibt einige Einschränkungen für die Entwrappung: keine schlüsselbasierten Mutex-Ressourcen, keine GDI-kompatiblen Ressourcen und keine Puffer. Sie können jedoch UnwrapUnderlyingResource- verwenden, um Ressourcen zu entpacken, die über die ID3D11On12Device::CreateWrappedResource Methode erstellt wurden, sowie Ressourcen, die über ID3D11Device::CreateTexture2Derstellt wurden.

Im Allgemeinen müssen Sie das Objekt an Direct3D11on12 zurückgeben, bevor Sie es erneut in Direct3D 11 verwenden (siehe ID3D11On12Device2::ReturnUnderlyingResource).

Sie können auch UnwrapUnderlyingResource- verwenden, um einen Swapchainpuffer aufzuheben. Sie müssen die Ressource auch an Direct3D11on12 zurückgeben, bevor Sie Present aufrufen (oder anderweitig die Ressource verwenden).

Durch das Entpacken einer Ressource wird die Ressource von der Direct3D11On12-Übersetzungsebene ausgecheckt. Sie können keine Übersetzungsschichtnutzung (über eine der beiden Versionen der API) planen, während die Ressource ausgecheckt ist. Überprüfen Sie die Ressource mit ID3D11On12Device2::ReturnUnderlyingResourcezurück (auch als zurückgegeben e Ressource).

UnwrapUnderlyingResource wird nicht geleert, und es kann gpu-Arbeit planen. Sie sollten nach dem Aufrufen UnwrapUnderlyingResource- leeren, wenn Sie extern auf den Abschluss warten.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10, Version 2004 (10.0; Build 19041)
mindestens unterstützte Server- Windows Server, Version 2004 (10.0; Build 19041)
Header- d3d11on12.h
Library D3D11.lib
DLL- D3D11.dll

Siehe auch