Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 |