Share via


方法:コマンド リストの記録

コマンド リストは、レンダリング コマンドを記録したリストです。コマンド リストは、レンダリング コマンドを記録しておき、それを後で再生するために使用します。コマンド リストは、レンダリング タスクを複数のスレッドに分割する場合に効果的です。

コマンド リストを記録するには

  1. コマンド リストは、ディファード コンテキストから作成する必要があり、デバイス ステートとレンダリング アクションを収録します。特定のデバイスに対して、ID3D11Device::CreateDeferredContext を呼び出してディファード コンテキストを作成します。

     HRESULT hr; ID3D11DeviceContext* pDeferredContext = NULL;  hr = g_pd3dDevice->CreateDeferredContext(0, &pDeferredContext); 
    
  2. ディファード コンテキストを使用してレンダリングします。

     float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f }; pDeferredContext->ClearRenderTargetView( g_pRenderTargetView, ClearColor );      // Add additional rendering commands ... 
    

    このサンプルでは、レンダー ターゲットをクリアしていますが、別のレンダリング コマンドを追加することもできます。

  3. ID3D11DeviceContext::FinishCommandList を呼び出し、初期化していない ID3D11CommandList インターフェイスにポインターを渡すことによって、コマンド リストを作成し、そこにコマンドを記録します。

     ID3D11CommandList* pd3dCommandList = NULL; HRESULT hr; hr = pDeferredContext->FinishCommandList(FALSE, &pd3dCommandList); 
    

    メソッドが戻ると、すべてのレンダリング コマンドを収めたコマンド リストが作成され、インターフェイスがアプリケーションに返されます。

    ブール パラメーターは、ディファード コンテキストでパイプライン ステートに対して実行する処理をランタイムに指示します。TRUE は、記録が完了したら、デバイス コンテキストのステートをコマンド リスト前の状態に戻すことを指定します。FALSE は、記録後にステートを変更しないことを指定します。つまり、デバイス コンテキストには、コマンド リストに保存されているステート変更が反映されます。

コマンド リストの再生例については、「方法:コマンド リストの再生」を参照してください。

関連項目

コマンド リスト