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 内容