ID3D11Device::CreateDeferredContext

コマンド リストを再生するディファード コンテキストを作成します。

HRESULT 
CreateDeferredContext(
  UINT ContextFlags,
  ID3D11DeviceContext **ppDeferredContext
);

パラメータ

  • ContextFlags
    将来の使用に備えて予約されたフラグです。0 を渡します。
  • ppDeferredContext
    このメソッドの完了時には、実行時に渡した ID3D11DeviceContext インターフェイス ポインターへのポインターが初期化されます。

戻り値

成功した場合は、S_OK を返します。それ以外の場合は、次のいずれかを返します。

  • ビデオ カードがシステムから物理的に取り外されているか、ビデオ カードのドライバー アップグレードが行われている場合、DXGI_ERROR_DEVICE_REMOVED を返します。このエラーが発生した場合は、デバイスを破棄し、再作成する必要があります。
  • 現在のコンテキストから CreateDeferredContext メソッドを呼び出すことができない場合 (D3D11_CREATE_DEVICE_SINGLETHREADED を使用してデバイスを作成している場合) は、DXGI_ERROR_INVALID_CALL を返します。
  • ContextFlags パラメーターが無効な場合は、E_INVALIDARG を返します。
  • 使用可能なメモリーをアプリケーションで使い果たしている場合は、E_OUTOFMEMORY を返します。

解説 

ディファード コンテキストは、メインのレンダリング スレッド以外のスレッドにグラフィック コマンドを記録するために使用できるスレッド セーフなコンテキストです。ディファード コンテキストを使用すると、ID3D11CommandList インターフェイスでカプセル化されているコマンド リストにグラフィック コマンドを記録できます。すべてのシーン項目を記録した後、これらをメインのレンダリング スレッドに送信して、最終的なレンダリングを実行できます。この方法では、複数のスレッド間でレンダリング タスクを並行して実行できるため、マルチコア CPU のシナリオでのパフォーマンス向上を図ることができます。

複数のディファード コンテキストを作成できます。

    D3D11_CREATE_DEVICE_SINGLETHREADED フラグを使用して最初のデバイスを作成していない場合、CreateDeferredContext メソッドは失敗し、ディファード コンテキストは作成できません。

要件

ヘッダー: D3D11.h 宣言

ライブラリ: D3d11.lib 内容

関連項目

ID3D11Device