D3D12SerializeRootSignature-Funktion (d3d12.h)
Serialisiert eine Stammsignaturversion 1.0, die an ID3D12Device::CreateRootSignature übergeben werden kann.
Syntax
HRESULT D3D12SerializeRootSignature(
[in] const D3D12_ROOT_SIGNATURE_DESC *pRootSignature,
[in] D3D_ROOT_SIGNATURE_VERSION Version,
[out] ID3DBlob **ppBlob,
[out, optional] ID3DBlob **ppErrorBlob
);
Parameter
[in] pRootSignature
Typ: const D3D12_ROOT_SIGNATURE_DESC*
Die Beschreibung der Stammsignatur als Zeiger auf eine D3D12_ROOT_SIGNATURE_DESC-Struktur .
[in] Version
Typ: D3D_ROOT_SIGNATURE_VERSION
Ein D3D_ROOT_SIGNATURE_VERSION typisierter Wert, der die Version der Stammsignatur angibt.
[out] ppBlob
Typ: ID3DBlob**
Ein Zeiger auf einen Speicherblock, der einen Zeiger auf die ID3DBlob-Schnittstelle empfängt, mit dem Sie auf die serialisierte Stammsignatur zugreifen können.
[out, optional] ppErrorBlob
Typ: ID3DBlob**
Ein Zeiger auf einen Speicherblock, der einen Zeiger auf die ID3DBlob-Schnittstelle empfängt, mit dem Sie auf Serialisierungsfehlermeldungen zugreifen können, oder NULL , wenn keine Fehler vorliegen.
Rückgabewert
Typ: HRESULT
Gibt bei erfolgreicher Ausführung S_OK zurück. Gibt andernfalls einen der Direct3D 12-Rückgabecodes zurück.
Hinweise
Diese Funktion wurde ab dem Windows 10 Anniversary Update (14393) durch D3D12SerializeVersionedRootSignature ersetzt.
Wenn eine Anwendung prozedural eine D3D12_ROOT_SIGNATURE_DESC-Datenstruktur generiert, muss sie einen Zeiger auf diese D3D12_ROOT_SIGNATURE_DESC in einem Aufruf von D3D12SerializeRootSignature übergeben, um das serialisierte Formular zu erstellen. Die Anwendung übergibt dann das serialisierte Formular, auf das ppBlob auf ID3D12Device::CreateRootSignature zeigt.
Wenn ein Shader mit einer Stammsignatur erstellt wurde, enthält der kompilierte Shader bereits eine serialisierte Stammsignatur. Übergeben Sie in diesem Fall das kompilierte Shaderblob an ID3D12Device::CreateRootSignature , um das Laufzeitstammsignaturobjekt abzurufen.
Die Funktionssignatur PFN_D3D12_SERIALIZE_ROOT_SIGNATURE wird als Typedef bereitgestellt, sodass Sie dynamische Verknüpfungstechniken (GetProcAddress) anstelle einer statischen Verknüpfung verwenden können.
Beispiele
Erstellen Sie eine leere Stammsignatur.
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)));
Weitere Informationen finden Sie im Beispielcode in der D3D12-Referenz.
Anforderungen
Zielplattform | Windows |
Kopfzeile | d3d12.h |
Bibliothek | D3D12.lib |
DLL | D3D12.dll |