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 |