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 |