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
Library D3D12.lib
DLL D3D12.dll

另请参阅

ID3D12Device

ID3D12GraphicsCommandList::Reset