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 |