Condividi tramite


Metodo ID3D12Device::CreateRootSignature (d3d12.h)

Crea un layout di firma radice.

Sintassi

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

Parametri

[in] nodeMask

Tipo: UINT

Per un'operazione GPU singola, impostare questo valore su zero. Se sono presenti più nodi GPU, impostare bit per identificare i nodi (schede fisiche del dispositivo) a cui applicare la firma radice. Ogni bit della maschera corrisponde a un singolo nodo. Fare riferimento ai sistemi multi-adapter.

[in] pBlobWithRootSignature

Tipo: const void*

Puntatore ai dati di origine per la firma serializzata.

[in] blobLengthInBytes

Tipo: SIZE_T

Dimensioni, in byte, del blocco di memoria a cui pBlobWithRootSignature punta.

riid

Tipo: REFIID

Identificatore univoco globale (GUID) per l'interfaccia della firma radice. Vedere la sezione Osservazioni. Parametro di input.

[out] ppvRootSignature

Tipo: void**

Puntatore a un blocco di memoria che riceve un puntatore alla firma radice.

Valore restituito

Tipo: HRESULT

Restituisce S_OK se ha esito positivo; in caso contrario, restituisce uno dei codici restituiti Direct3D 12.

Questo metodo restituisce E_INVALIDARG se il BLOB che pBlobWithRootSignature punta a non è valido.

Commenti

Se un'applicazione genera in modo procedurale una struttura di dati D3D12_ROOT_SIGNATURE_DESC , deve passare un puntatore a questo D3D12_ROOT_SIGNATURE_DESC in una chiamata a D3D12SerializeRootSignature per creare il modulo serializzato. L'applicazione passa quindi il modulo serializzato a pBlobWithRootSignature in una chiamata a ID3D12Device::CreateRootSignature.

È possibile ottenere il GUID REFIID o il GUID dell'interfaccia al layout della firma radice usando la macro __uuidof(). Ad esempio, __uuidof(ID3D12RootSignature) otterrà il GUID dell'interfaccia in una firma radice.

Esempio

L'esempio D3D12HelloTriangle usa ID3D12Device::CreateRootSignature come indicato di seguito:

Creare una firma radice vuota.

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)));

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione d3d12.h
Libreria D3D12.lib
DLL D3D12.dll

Vedi anche

ID3D12Device