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 (adattatore fisico del dispositivo) per cui creare l'elenco dei comandi. Ogni bit della maschera corrisponde a un singolo nodo. È necessario impostare un solo bit. Vedere anche sistemi multi-adapter.

[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 contenente lo stato della pipeline iniziale per l'elenco di comandi. Se è nullptr, il runtime imposta uno stato iniziale fittizio della pipeline, 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 cui il costo complessivo della registrazione dell'elenco di comandi probabilmente nano il costo di un'impostazione di stato iniziale singola. Pertanto, non è necessario impostare il parametro dello stato della pipeline iniziale, se si tratta di un problema.

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 in generale 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.

Vedere Codici restituiti Direct3D 12 per altri valori restituiti possibili.

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

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

Vedi anche

ID3D12Device

ID3D12GraphicsCommandList::Reset