ID3D11On12Device2::UnwrapUnderlyingResource メソッド (d3d11on12.h)

Direct3D 11 リソース オブジェクトのラップを解除し、Direct3D 12 リソース オブジェクトとして取得します。

構文

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

パラメーター

[in] pResource11

種類: ID3D11Resource*

ラップ解除する Direct3D 11 リソース オブジェクト。

[in] pCommandQueue

種類: ID3D12CommandQueue*

アプリケーションでリソースの使用を計画しているコマンド キュー。 リソースにアクセスする保留中の作業では、フェンス待機がこのキューでスケジュールされます。 その後、呼び出し元所有のフェンス上のシグナルを含め、このキューでさらに作業をキューに入れます。

[in] riid

型: REFIID

ppvResource12返されるインターフェイスのグローバル一意識別子 (GUID) への参照。

[out] ppvResource12

型: void**

Direct3D 12 リソースへのポインターを受け取るメモリ ブロックへのポインター。

戻り値

型: HRESULT

関数が成功した場合は、S_OK を返します。 それ以外の場合は、 HRESULTエラー コードが返されます。

注釈

リソースは D3D12_RESOURCE_STATE_COMMON に移行され (まだその状態になっていない場合)、適切な待機がコマンド キュー (pCommandQueue) に挿入されます。

ラップ解除できる内容には、キー付きミューテックス リソースなし、GDI 互換リソース、バッファーなしという制限があります。 ただし、 UnwrapUnderlyingResource を使用すると、 ID3D11On12Device::CreateWrappedResource メソッドを使用して作成されたリソースと、 ID3D11Device::CreateTexture2D で作成されたリソースのラップを解除できます。

一般に、Direct3D11on12 でもう一度使用する前に、オブジェクトを Direct3D11on12 に返す必要があります (「ID3D11On12Device2::ReturnUnderlyingResource」を参照してください)。

UnwrapUnderlyingResource を使用してスワップチェーン バッファーのラップを解除することもできます。 また、 Present を呼び出す (またはリソースを使用する) 前に、リソースを Direct3D11on12 に返す必要もあります。

リソースのラップを解除すると、Direct3D11On12 変換レイヤーからリソースがチェックアウトされます。 リソースがチェックアウトされている間は、(どちらのバージョンの API でも) 翻訳レイヤーの使用をスケジュールすることはできません。ID3D11On12Device2::ReturnUnderlyingResource を使用して、リソースをチェックインし直します (リソースのしとも呼ばれます)。

UnwrapUnderlyingResource はフラッシュせず、GPU の作業をスケジュールする場合があります。 外部で完了を待つ場合 は、UnwrapUnderlyingResource を呼び出した後にフラッシュする必要があります。

要件

要件
サポートされている最小のクライアント Windows 10バージョン 2004 (10.0;ビルド 19041)
サポートされている最小のサーバー Windows Server バージョン 2004 (10.0;ビルド 19041)
Header d3d11on12.h
Library D3D11.lib
[DLL] D3D11.dll

こちらもご覧ください