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 |