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
指定要创建的命令列表的类型。
[in] pCommandAllocator
指向设备从中创建命令列表的命令分配器对象的指针。
[in, optional] pInitialState
类型: ID3D12PipelineState*
指向管道状态对象的可选指针,该对象包含命令列表的初始管道状态。 如果为 nullptr
,则运行时将设置虚拟初始管道状态,以便驱动程序不必处理未定义的状态。 此开销较低,尤其是对于命令列表而言,记录命令列表的总成本可能会使单个初始状态设置的成本相形见绌。 因此,如果不方便,则不设置初始管道状态参数的成本很小。
另一方面,对于捆绑包,尝试设置初始状态参数 (可能更有意义,因为捆绑包整体可能较小,并且可以在) 频繁重复使用。
[in] riid
类型: REFIID
对要在 ppCommandList 中返回的命令列表接口 (GUID) 的全局唯一标识符的引用。
[out] ppCommandList
类型: void**
指向内存块的指针,该内存块接收指向命令列表的 ID3D12CommandList 或 ID3D12GraphicsCommandList 接口的指针。
返回值
类型: 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 |