Condividi tramite


Metodo ID3D12Device::CreateRootSignature (d3d12.h)

Crea un layout della 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 una singola operazione GPU, 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 nella maschera corrisponde a un singolo nodo. Fare riferimento a Sistemi multi-adattatore.

[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 punta pBlobWithRootSignature .

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 a cui punta pBlobWithRootSignature non è valido.

Osservazioni:

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 form serializzato. L'applicazione passa quindi il modulo serializzato a pBlobWithRootSignature in una chiamata a ID3D12Device::CreateRootSignature.

Il REFIID, o GUID, dell'interfaccia al layout della firma radice può essere ottenuto usando la macro __uuidof(). Ad esempio, __uuidof(ID3D12RootSignature) otterrà il GUID dell'interfaccia a una firma radice.

Esempi

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 Value
Piattaforma di destinazione Windows
Header d3d12.h
Library D3D12.lib
DLL D3D12.dll

Vedere anche

ID3D12Device