Condividi tramite


Funzione D3D12SerializeRootSignature (d3d12.h)

Serializza una firma radice versione 1.0 che può essere passata a ID3D12Device::CreateRootSignature.

Sintassi

HRESULT D3D12SerializeRootSignature(
  [in]            const D3D12_ROOT_SIGNATURE_DESC *pRootSignature,
  [in]            D3D_ROOT_SIGNATURE_VERSION      Version,
  [out]           ID3DBlob                        **ppBlob,
  [out, optional] ID3DBlob                        **ppErrorBlob
);

Parametri

[in] pRootSignature

Tipo: const D3D12_ROOT_SIGNATURE_DESC*

Descrizione della firma radice, come puntatore a una struttura D3D12_ROOT_SIGNATURE_DESC .

[in] Version

Tipo: D3D_ROOT_SIGNATURE_VERSION

Valore D3D_ROOT_SIGNATURE_VERSION tipizzato che specifica la versione della firma radice.

[out] ppBlob

Tipo: ID3DBlob**

Puntatore a un blocco di memoria che riceve un puntatore all'interfaccia ID3DBlob che è possibile usare per accedere alla firma radice serializzata.

[out, optional] ppErrorBlob

Tipo: ID3DBlob**

Puntatore a un blocco di memoria che riceve un puntatore all'interfaccia ID3DBlob che è possibile usare per accedere ai messaggi di errore del serializzatore o NULL se non sono presenti errori.

Valore restituito

Tipo: HRESULT

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

Commenti

Questa funzione è stata sostituita da D3D12SerializeVersionedRootSignature a partire dall'aggiornamento dell'anniversario di Windows 10 (14393).

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 cui ppBlob punta in ID3D12Device::CreateRootSignature.

Se un shader è stato creato con una firma radice in esso, lo shader compilato conterrà già una firma radice serializzata. In questo caso, passare il BLOB shader compilato a ID3D12Device::CreateRootSignature per ottenere l'oggetto firma radice del runtime.

La firma della funzione PFN_D3D12_SERIALIZE_ROOT_SIGNATURE viene fornita come typedef, in modo che sia possibile usare tecniche di collegamento dinamico (GetProcAddress) anziché collegare staticamente.

Esempio

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

Fare riferimento al codice di esempio nel riferimento D3D12.

Requisiti

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

Vedi anche

Funzioni di sistema

Creazione di una firma radice