Поделиться через


Метод 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 присвойте этому параметру значение 0. Если имеется несколько узлов GPU, задайте бит, чтобы определить узел (физический адаптер устройства), для которого создается список команд. Каждый бит в маске соответствует одному узлу. Необходимо задать только один бит. См. также статью Системы с несколькими адаптерами.

[in] type

Тип: D3D12_COMMAND_LIST_TYPE

Указывает тип создаваемого списка команд.

[in] pCommandAllocator

Тип: ID3D12CommandAllocator*

Указатель на объект распределителя команд, из которого устройство создает списки команд.

[in, optional] pInitialState

Тип: ID3D12PipelineState*

Необязательный указатель на объект состояния конвейера, содержащий начальное состояние конвейера для списка команд. Если это nullptr, среда выполнения устанавливает фиктивное начальное состояние конвейера, чтобы драйверы не имели дело с неопределенным состоянием. Затраты на это низкие, особенно для списка команд, для которого общая стоимость записи списка команд, скорее всего, затмевает стоимость одного параметра начального состояния. Поэтому установка параметра начального состояния конвейера невелика, если это неудобно.

Для пакетов, с другой стороны, имеет смысл попытаться задать параметр начального состояния (так как пакеты, скорее всего, меньше и могут часто использоваться повторно).

[in] riid

Тип: REFIID

Ссылка на глобальный уникальный идентификатор (GUID) интерфейса списка команд для возврата в ppCommandList.

[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
Header d3d12.h
Библиотека D3D12.lib
DLL D3D12.dll

См. также раздел

ID3D12Device

ID3D12GraphicsCommandList::Reset