Freigeben über


ID3D12Device::CreateRootSignature-Methode (d3d12.h)

Erstellt ein Stammsignaturlayout.

Syntax

HRESULT CreateRootSignature(
  [in]  UINT       nodeMask,
  [in]  const void *pBlobWithRootSignature,
  [in]  SIZE_T     blobLengthInBytes,
        REFIID     riid,
  [out] void       **ppvRootSignature
);

Parameter

[in] nodeMask

Typ: UINT

Legen Sie für einzelne GPU-Vorgänge diesen Wert auf 0 fest. Wenn mehrere GPU-Knoten vorhanden sind, legen Sie Bits fest, um die Knoten (die physischen Adapter des Geräts) zu identifizieren, auf die die Stammsignatur angewendet werden soll. Jedes Bit in der Maske entspricht einem einzelnen Knoten. Weitere Informationen finden Sie unter Systeme mit mehreren Adaptern.

[in] pBlobWithRootSignature

Typ: const void*

Ein Zeiger auf die Quelldaten für die serialisierte Signatur.

[in] blobLengthInBytes

Typ: SIZE_T

Die Größe des Speicherblocks in Bytes, auf den pBlobWithRootSignature verweist.

riid

Typ: REFIID

Der globally unique Identifier (GUID) für die Stammsignaturschnittstelle. Siehe Hinweise. Ein Eingabeparameter.

[out] ppvRootSignature

Typ: void**

Ein Zeiger auf einen Speicherblock, der einen Zeiger auf die Stammsignatur empfängt.

Rückgabewert

Typ: HRESULT

Gibt bei erfolgreicher Ausführung S_OK zurück. Gibt andernfalls einen der Direct3D 12-Rückgabecodes zurück.

Diese Methode gibt E_INVALIDARG zurück, wenn das Blob, auf das pBlobWithRootSignature verweist, ungültig ist.

Hinweise

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. Anschließend übergibt die Anwendung das serialisierte Formular an pBlobWithRootSignature in einem Aufruf von ID3D12Device::CreateRootSignature.

Die REFIID oder GUID der Schnittstelle zum Stammsignaturlayout kann mithilfe des Makros __uuidof() abgerufen werden. Beispielsweise ruft __uuidof(ID3D12RootSignature) die GUID der Schnittstelle zu einer Stammsignatur ab.

Beispiele

Das D3D12HelloTriangle-Beispiel verwendet ID3D12Device::CreateRootSignature wie folgt:

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

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d12.h
Bibliothek D3D12.lib
DLL D3D12.dll

Weitere Informationen

ID3D12Device