方法: コマンド リストを記録する

コマンド リストは、レンダリング コマンドの記録された一覧です。 このトピックでは、 コマンド リストを作成して記録する方法について説明します。 コマンド リストを使用してレンダリング コマンドを記録し、後で再生します。 コマンド リストは、スレッド間でレンダリング タスクを分割する場合に便利です。

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

  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 は記録後に状態を変更しないことを意味します。 つまり、デバイス コンテキストには、コマンド リストに含まれる状態の変更が反映されます。

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

コマンド リスト

Direct3D 11 の使用方法