Método ID3D12Device::CreateCommandList (d3d12.h)

Crea una lista de comandos.

Sintaxis

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

Parámetros

[in] nodeMask

Tipo: UINT

Para una operación de GPU única, establézcalo en cero. Si hay varios nodos de GPU, establezca un poco para identificar el nodo (el adaptador físico del dispositivo) para el que se va a crear la lista de comandos. Cada bit de la máscara corresponde a un único nodo. Solo se debe establecer un bit. Consulte también Sistemas de varios adaptadores.

[in] type

Tipo: D3D12_COMMAND_LIST_TYPE

Especifica el tipo de lista de comandos que se va a crear.

[in] pCommandAllocator

Tipo: ID3D12CommandAllocator*

Puntero al objeto de asignador de comandos desde el que el dispositivo crea listas de comandos.

[in, optional] pInitialState

Tipo: ID3D12PipelineState*

Puntero opcional al objeto de estado de canalización que contiene el estado inicial de la canalización para la lista de comandos. Si es nullptr, el tiempo de ejecución establece un estado de canalización inicial ficticio, de modo que los controladores no tengan que tratar con el estado indefinido. La sobrecarga de esto es baja, especialmente para una lista de comandos, para la que el costo total de registrar la lista de comandos probablemente enano el costo de una única configuración de estado inicial. Por lo tanto, hay poco costo al no establecer el parámetro de estado de canalización inicial, si lo hace inconveniente.

Por otro lado, en el caso de las agrupaciones, es posible que tenga más sentido intentar establecer el parámetro de estado inicial (ya que es probable que las agrupaciones sean más pequeñas en general y se puedan reutilizar con frecuencia).

[in] riid

Tipo: REFIID

Referencia al identificador único global (GUID) de la interfaz de lista de comandos que se va a devolver en ppCommandList.

[out] ppCommandList

Tipo: void**

Puntero a un bloque de memoria que recibe un puntero a la interfaz ID3D12CommandList o ID3D12GraphicsCommandList para la lista de comandos.

Valor devuelto

Tipo: HRESULT

Si la función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de errorHRESULT.

Valor devuelto Descripción
E_OUTOFMEMORY No hay memoria suficiente para crear la lista de comandos.

Consulta Códigos de retorno de Direct3D 12 para ver otros valores devueltos posibles.

Comentarios

El dispositivo crea listas de comandos desde el asignador de comandos.

Ejemplos

El ejemplo D3D12Bundles usa ID3D12Device::CreateCommandList como se indica a continuación.

Cree los objetos de canalización.

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

Cree un asignador de comandos.

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

Crear la lista de comandos directos.

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

Consulte el código de ejemplo en la referencia de D3D12.

Requisitos

Requisito Value
Plataforma de destino Windows
Encabezado d3d12.h
Library D3D12.lib
Archivo DLL D3D12.dll

Consulte también

ID3D12Device

ID3D12GraphicsCommandList::Reset