Метод 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
Указывает тип создаваемого списка команд.
[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 |