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 () 宏,取得根簽章配置介面的 REFIID 或 GUID。 例如,__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 |