Partager via


ID3D12Device ::CreateRootSignature, méthode (d3d12.h)

Crée une disposition de signature racine.

Syntaxe

HRESULT CreateRootSignature(
  [in]  UINT       nodeMask,
  [in]  const void *pBlobWithRootSignature,
  [in]  SIZE_T     blobLengthInBytes,
        REFIID     riid,
  [out] void       **ppvRootSignature
);

Paramètres

[in] nodeMask

Type : UINT

Pour une opération GPU unique, définissez cette valeur sur zéro. S’il existe plusieurs nœuds GPU, définissez des bits pour identifier les nœuds (les cartes physiques de l’appareil) auxquels la signature racine doit s’appliquer. Chaque bit du masque correspond à un nœud unique. Reportez-vous à Systèmes multi-adaptateurs.

[in] pBlobWithRootSignature

Type : const void*

Pointeur vers les données sources pour la signature sérialisée.

[in] blobLengthInBytes

Type : SIZE_T

Taille, en octets, du bloc de mémoire vers lequel pBlobWithRootSignature pointe.

riid

Type : REFIID

Identificateur global unique (GUID) de l’interface de signature racine. Consultez la section Notes. Paramètre d'entrée.

[out] ppvRootSignature

Type : void**

Pointeur vers un bloc de mémoire qui reçoit un pointeur vers la signature racine.

Valeur retournée

Type : HRESULT

Retourne S_OK en cas de réussite ; sinon, retourne l’un des codes de retour Direct3D 12.

Cette méthode retourne E_INVALIDARG si l’objet blob vers lequel pointe pBlobWithRootSignature n’est pas valide.

Remarques

Si une application génère de manière procédurale une structure de données D3D12_ROOT_SIGNATURE_DESC , elle doit passer un pointeur vers cette D3D12_ROOT_SIGNATURE_DESC dans un appel à D3D12SerializeRootSignature pour créer le formulaire sérialisé. L’application transmet ensuite le formulaire sérialisé à pBlobWithRootSignature dans un appel à ID3D12Device ::CreateRootSignature.

Le REFIID, ou GUID, de l’interface vers la disposition de signature racine peut être obtenu à l’aide de la macro __uuidof(). Par exemple, __uuidof(ID3D12RootSignature) obtient le GUID de l’interface vers une signature racine.

Exemples

L’exemple D3D12HelloTriangle utilise ID3D12Device ::CreateRootSignature comme suit :

Créez une signature racine vide.

CD3DX12_ROOT_SIGNATURE_DESC rootSignatureDesc;
rootSignatureDesc.Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT);

ComPtr<ID3DBlob> signature;
ComPtr<ID3DBlob> error;
ThrowIfFailed(D3D12SerializeRootSignature(&rootSignatureDesc, D3D_ROOT_SIGNATURE_VERSION_1, &signature, &error));
ThrowIfFailed(m_device->CreateRootSignature(0, signature->GetBufferPointer(), signature->GetBufferSize(), IID_PPV_ARGS(&m_rootSignature)));

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête d3d12.h
Bibliothèque D3D12.lib
DLL D3D12.dll

Voir aussi

ID3D12Device