ID3D12Device::CreateRootSignature 方法 (d3d12.h)

建立根簽章配置。

語法

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

參數

[in] nodeMask

類型: UINT

針對單一 GPU 作業,請將此設定為零。 如果有多個 GPU 節點,請設定位來識別裝置實體適配卡 (要套用根簽章的節點) 。 遮罩中的每個位都會對應至單一節點。 請參閱 多配接器系統

[in] pBlobWithRootSignature

類型: const void*

串行化簽章之源數據的指標。

[in] blobLengthInBytes

類型: SIZE_T

pBlobWithRootSignature 所指向記憶體區塊的大小,以位元組為單位。

riid

類型: REFIID

根簽章介面的全域唯一標識符 (GUID) 。 請參閱<備註>。 輸入參數。

[out] ppvRootSignature

類型: void**

記憶體區塊的指標,可接收根簽章的指標。

傳回值

類型: HRESULT

如果成功 則傳回S_OK;否則,會傳回其中一個 Direct3D 12 傳回碼

如果 pBlobWithRootSignature 指向的 Blob 無效,這個方法會傳回E_INVALIDARG

備註

如果應用程式以程式方式產生D3D12_ROOT_SIGNATURE_DESC數據結構,則必須在呼叫 D3D12SerializeRootSignature 中傳遞這個D3D12_ROOT_SIGNATURE_DESC指標,使串行化窗體成為。 接著,應用程式會在呼叫ID3D12Device::CreateRootSignature 中,將串行化表單傳遞至 pBlobWithRootSignature

您可以使用 __uuidof () 宏,取得根簽章配置介面的 REFIIDGUID。 例如,__uuidof (ID3D12RootSignature) 會取得介面的 GUID 到根簽章。

範例

D3D12HelloTriangle 範例使用 ID3D12Device::CreateRootSignature,如下所示:

建立空的根簽章。

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

規格需求

需求
目標平台 Windows
標頭 d3d12.h
程式庫 D3D12.lib
Dll D3D12.dll

另請參閱

ID3D12Device