次の方法で共有


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によって作成されたリソースをラップ解除できます。

一般に、Direct3D 11 でもう一度使用する前に、オブジェクトを Direct3D11on12 に返す必要があります (ID3D11On12Device2::ReturnUnderlyingResourceを参照)。

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

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

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

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 2004 (10.0;ビルド 19041)
サポートされる最小サーバー Windows Server バージョン 2004 (10.0;ビルド 19041)
ヘッダー d3d11on12.h
ライブラリ D3D11.lib
DLL D3D11.dll

関連項目