ID3D12Device ::CreateCommandList, méthode (d3d12.h)
Crée une liste de commandes.
Syntaxe
HRESULT CreateCommandList(
[in] UINT nodeMask,
[in] D3D12_COMMAND_LIST_TYPE type,
[in] ID3D12CommandAllocator *pCommandAllocator,
[in, optional] ID3D12PipelineState *pInitialState,
[in] REFIID riid,
[out] void **ppCommandList
);
Paramètres
[in] nodeMask
Type : UINT
Pour une opération mono-GPU, définissez cette valeur sur zéro. S’il existe plusieurs nœuds GPU, définissez un bit pour identifier le nœud (la carte physique de l’appareil) pour lequel créer la liste de commandes. Chaque bit du masque correspond à un seul nœud. Un seul bit doit être défini. Consultez également Systèmes multi-adaptateurs.
[in] type
Type : D3D12_COMMAND_LIST_TYPE
Spécifie le type de liste de commandes à créer.
[in] pCommandAllocator
Type : ID3D12CommandAllocator*
Pointeur vers l’objet d’allocation de commande à partir duquel l’appareil crée des listes de commandes.
[in, optional] pInitialState
Type : ID3D12PipelineState*
Pointeur facultatif vers l’objet d’état du pipeline qui contient l’état initial du pipeline pour la liste de commandes. S’il s’agit nullptr
de , le runtime définit un état de pipeline initial factice, afin que les pilotes n’aient pas à gérer l’état non défini. La surcharge est faible, en particulier pour une liste de commandes, pour laquelle le coût global de l’enregistrement de la liste de commandes dépasse probablement le coût d’un paramètre d’état initial unique. Il est donc peu coûteux de ne pas définir le paramètre d’état du pipeline initial, si cela n’est pas pratique.
Pour les bundles, en revanche, il peut être plus judicieux d’essayer de définir le paramètre d’état initial (étant donné que les bundles sont probablement plus petits dans l’ensemble et peuvent être réutilisés fréquemment).
[in] riid
Type : REFIID
Référence à l’identificateur global unique (GUID) de l’interface de liste de commandes à retourner dans ppCommandList.
[out] ppCommandList
Type : void**
Pointeur vers un bloc de mémoire qui reçoit un pointeur vers l’interface ID3D12CommandList ou ID3D12GraphicsCommandList pour la liste de commandes.
Valeur retournée
Type : HRESULT
Si la fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreurHRESULT.
Valeur retournée | Description |
---|---|
E_OUTOFMEMORY | La mémoire est insuffisante pour créer la liste de commandes. |
Pour connaître les autres valeurs de retour possibles, consultez Codes de retour Direct3D 12 .
Remarques
L’appareil crée des listes de commandes à partir de l’allocateur de commandes.
Exemples
L’exemple D3D12Bundles utilise ID3D12Device ::CreateCommandList comme suit.
Créez les objets de pipeline.
ComPtr<ID3D12CommandAllocator> m_commandAllocator;
ComPtr<ID3D12GraphicsCommandList> m_commandList;
Créez un allocateur de commande.
ThrowIfFailed(m_device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_commandAllocator)));
Création de la liste de commandes directes.
ThrowIfFailed(m_device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_commandAllocator.Get(), nullptr, IID_PPV_ARGS(&m_commandList)));
Reportez-vous à l’exemple de code dans la référence D3D12.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d3d12.h |
Bibliothèque | D3D12.lib |
DLL | D3D12.dll |