共用方式為


如何:記錄命令清單

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

記錄命令清單

  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