如何:記錄命令清單

命令清單是轉譯命令的記錄清單。 本主題說明如何建立和記錄 命令清單。 使用命令清單來記錄轉譯命令,並在稍後播放。 命令清單方便線上程之間分割轉譯工作。

記錄命令清單

  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