ID3D12Device::CreateCommandList 方法 (d3d12.h)

建立命令清單。

語法

HRESULT CreateCommandList(
  [in]           UINT                    nodeMask,
  [in]           D3D12_COMMAND_LIST_TYPE type,
  [in]           ID3D12CommandAllocator  *pCommandAllocator,
  [in, optional] ID3D12PipelineState     *pInitialState,
  [in]           REFIID                  riid,
  [out]          void                    **ppCommandList
);

參數

[in] nodeMask

類型: UINT

針對單一 GPU 作業,請將此設定為零。 如果有多個 GPU 節點,請設定一個位來識別要建立命令清單的裝置實體適配卡 (節點) 。 遮罩中的每個位都會對應至單一節點。 只有一個位必須設定。 另請參閱 多配接器系統

[in] type

類型: D3D12_COMMAND_LIST_TYPE

指定要建立的命令清單類型。

[in] pCommandAllocator

類型: ID3D12CommandAllocator*

裝置從中建立命令清單之命令配置器物件的指標。

[in, optional] pInitialState

類型: ID3D12PipelineState*

管線狀態對象的選擇性指標,其中包含命令清單的初始管線狀態。 nullptr如果是,則運行時間會設定虛擬的初始管線狀態,讓驅動程式不需要處理未定義的狀態。 這的額外負荷很低,特別是針對命令清單,記錄命令清單的整體成本可能會使單一初始狀態設定的成本減少。 因此,如果這麼做並不方便,則不需要設定初始管線狀態參數。

另一方面,對於套件組合而言,嘗試設定初始狀態參數 (可能比較合理,因為套件組合可能整體較小,而且可以經常重複使用) 。

[in] riid

類型: REFIID

ppCommandList 中傳回的命令清單介面 (GUID) 全域唯一標識符的參考。

[out] ppCommandList

類型: void**

記憶體區塊的指標,接收命令清單之 ID3D12CommandListID3D12GraphicsCommandList 介面的指標。

傳回值

類型: HRESULT

如果函式成功,它會傳回 S_OK。 否則,它會傳回 HRESULT錯誤碼

傳回值 描述
E_OUTOFMEMORY 記憶體不足,無法建立命令清單。

如需其他可能的傳回值,請參閱 Direct3D 12 傳回碼

備註

裝置會從命令配置器建立命令清單。

範例

D3D12Bundles 範例使用 ID3D12Device::CreateCommandList,如下所示。

建立管線物件。

ComPtr<ID3D12CommandAllocator> m_commandAllocator;
ComPtr<ID3D12GraphicsCommandList> m_commandList;

建立命令配置器。

ThrowIfFailed(m_device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_commandAllocator)));

建立直接命令清單。

ThrowIfFailed(m_device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_commandAllocator.Get(), nullptr, IID_PPV_ARGS(&m_commandList)));

請參閱 D3D12 參考中的範例程式代碼

規格需求

需求
目標平台 Windows
標頭 d3d12.h
程式庫 D3D12.lib
Dll D3D12.dll

另請參閱

ID3D12Device

ID3D12GraphicsCommandList::Reset