Share via


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

Weitere Informationen

Kernfunktionen

Erstellen einer Stammsignatur