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 |