如何:记录命令列表

命令列表是呈现命令的记录列表。 本主题演示如何创建和记录 命令列表。 使用命令列表来记录呈现命令,并在以后播放它们。 命令列表便于在线程之间拆分呈现任务。

记录命令列表

  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