Share via


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

Cria uma lista de comandos.

Sintaxe

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 a operação de GPU única, defina isso como zero. Se houver vários nós de GPU, defina um bit para identificar o nó (adaptador físico do dispositivo) para o qual criar a lista de comandos. Cada bit na máscara corresponde a um único nó. Apenas um bit deve ser definido. Confira também Sistemas de vários adaptadores.

[in] type

Tipo: D3D12_COMMAND_LIST_TYPE

Especifica o tipo de lista de comandos a ser criada.

[in] pCommandAllocator

Tipo: ID3D12CommandAllocator*

Um ponteiro para o objeto alocador de comando do qual o dispositivo cria listas de comandos.

[in, optional] pInitialState

Tipo: ID3D12PipelineState*

Um ponteiro opcional para o objeto de estado do pipeline que contém o estado inicial do pipeline para a lista de comandos. Se for nullptr, o runtime definirá um estado de pipeline inicial fictício, para que os drivers não precisem lidar com o estado indefinido. A sobrecarga para isso é baixa, especialmente para uma lista de comandos, para a qual o custo geral da gravação da lista de comandos provavelmente reduz o custo de uma única configuração de estado inicial. Portanto, há pouco custo em não definir o parâmetro de estado inicial do pipeline, se isso for inconveniente.

Para pacotes, por outro lado, pode fazer mais sentido tentar definir o parâmetro de estado inicial (já que os pacotes provavelmente são menores no geral e podem ser reutilizados com frequência).

[in] riid

Tipo: REFIID

Uma referência ao GUID (identificador global exclusivo) da interface de lista de comandos a ser retornada em ppCommandList.

[out] ppCommandList

Tipo: void**

Um ponteiro para um bloco de memória que recebe um ponteiro para a interface ID3D12CommandList ou ID3D12GraphicsCommandList para a lista de comandos.

Retornar valor

Tipo: HRESULT

Se a função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erroHRESULT.

Valor retornado Descrição
E_OUTOFMEMORY Não há memória suficiente para criar a lista de comandos.

Confira Códigos de retorno do Direct3D 12 para obter outros valores retornados possíveis.

Comentários

O dispositivo cria listas de comandos do alocador de comandos.

Exemplos

O exemplo D3D12Bundles usa ID3D12Device::CreateCommandList da seguinte maneira.

Crie os objetos de pipeline.

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

Crie um alocador de comandos.

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

Criando a lista de comandos diretos.

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

Consulte o Código de Exemplo na Referência D3D12.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho d3d12.h
Biblioteca D3D12.lib
DLL D3D12.dll

Confira também

ID3D12Device

ID3D12GraphicsCommandList::Reset