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 |