Partager via


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 nullptrde , 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

Voir aussi

ID3D12Device

ID3D12GraphicsCommandList ::Reset