Condividi tramite


Metodo ID3D12Device::CreateCommandList (d3d12.h)

Crea un elenco di comandi.

Sintassi

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

Parametri

[in] nodeMask

Tipo: UINT

Per l'operazione a GPU singola, impostare questo valore su zero. Se sono presenti più nodi GPU, impostare un bit per identificare il nodo (scheda fisica del dispositivo) per cui creare l'elenco di comandi. Ogni bit nella maschera corrisponde a un singolo nodo. È necessario impostare un solo bit. Vedere anche Sistemi multi-adattatore.

[in] type

Tipo: D3D12_COMMAND_LIST_TYPE

Specifica il tipo di elenco di comandi da creare.

[in] pCommandAllocator

Tipo: ID3D12CommandAllocator*

Puntatore all'oggetto allocatore di comando da cui il dispositivo crea elenchi di comandi.

[in, optional] pInitialState

Tipo: ID3D12PipelineState*

Puntatore facoltativo all'oggetto stato della pipeline che contiene lo stato iniziale della pipeline per l'elenco di comandi. Se è nullptr, il runtime imposta uno stato fittizio della pipeline iniziale, in modo che i driver non devono gestire lo stato non definito. Il sovraccarico per questo è basso, in particolare per un elenco di comandi, per il quale il costo complessivo della registrazione dell'elenco di comandi probabilmente riduce il costo di un'impostazione di stato iniziale singola. Pertanto, l'impostazione del parametro di stato iniziale della pipeline comporta un costo minimo, in caso di inconveniente.

Per i bundle, d'altra parte, potrebbe essere più opportuno provare a impostare il parametro di stato iniziale (poiché i bundle sono probabilmente più piccoli nel complesso e possono essere riutilizzati di frequente).

[in] riid

Tipo: REFIID

Riferimento all'identificatore univoco globale (GUID) dell'interfaccia dell'elenco di comandi da restituire in ppCommandList.

[out] ppCommandList

Tipo: void**

Puntatore a un blocco di memoria che riceve un puntatore all'interfaccia ID3D12CommandList o ID3D12GraphicsCommandList per l'elenco di comandi.

Valore restituito

Tipo: HRESULT

Se la funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di erroreHRESULT.

Valore restituito Descrizione
E_OUTOFMEMORY Memoria insufficiente per creare l'elenco di comandi.

Per altri possibili valori restituiti, vedere Codici restituiti Direct3D 12 .

Commenti

Il dispositivo crea elenchi di comandi dall'allocatore dei comandi.

Esempio

L'esempio D3D12Bundles usa ID3D12Device::CreateCommandList come indicato di seguito.

Creare gli oggetti della pipeline.

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

Creare un allocatore di comandi.

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

Creazione dell'elenco di comandi diretto.

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

Fare riferimento al codice di esempio nel riferimento D3D12.

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d12.h
Libreria D3D12.lib
DLL D3D12.dll

Vedi anche

ID3D12Device

ID3D12GraphicsCommandList::Reset