如何:記錄命令清單
命令清單是轉譯命令的記錄清單。 本主題說明如何建立 命令清單並在中記錄。 使用命令清單來記錄轉譯命令,並在稍後播放它們。 命令清單方便在線程之間分割轉譯工作。
記錄命令清單
必須從延遲上下文建立指令列表,其中包含裝置狀態和轉譯動作。 給定裝置後,呼叫 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 表示在錄製之後不會變更狀態。 這表示裝置內容會反映命令清單中所包含的狀態變更。
若要檢視播放命令清單的範例,請參閱 如何:播放命令清單。
相關主題