如何:记录命令列表
命令列表是呈现命令的记录列表。 本主题演示如何创建和记录 命令列表。 使用命令列表来记录呈现命令,并在以后播放它们。 命令列表便于在线程之间拆分呈现任务。
记录命令列表
必须从包含设备状态和呈现操作的延迟上下文创建命令列表。 给定设备后,通过调用 ID3D11Device::CreateDeferredContext 创建延迟上下文。
HRESULT hr; ID3D11DeviceContext* pDeferredContext = NULL; hr = g_pd3dDevice->CreateDeferredContext(0, &pDeferredContext);
使用延迟的上下文呈现。
float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f }; pDeferredContext->ClearRenderTargetView( g_pRenderTargetView, ClearColor ); // Add additional rendering commands ...
此简单示例清除呈现器目标,但可以添加其他呈现命令。
通过调用 ID3D11DeviceContext::FinishCommandList 并将指针传递到未初始化的 ID3D11CommandList 接口来创建/记录命令列表。
ID3D11CommandList* pd3dCommandList = NULL; HRESULT hr; hr = pDeferredContext->FinishCommandList(FALSE, &pd3dCommandList);
当 方法返回时,将创建一个包含所有呈现命令的命令列表,并将接口返回到应用程序。
布尔参数告知运行时在延迟上下文中对管道状态执行的操作。 TRUE 表示在录制完成后将设备上下文的状态还原到其命令前列表条件, FALSE 表示录制后不更改状态。 这意味着设备上下文将反映命令列表中包含的状态更改。
若要查看播放命令列表的示例,请参阅 如何:播放命令列表。
相关主题