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 |