D3D12SerializeRootSignature 函式 (d3d12.h)

序列化可傳遞至 ID3D12Device::CreateRootSignature的根簽章 1.0 版。

語法

HRESULT D3D12SerializeRootSignature(
  [in]            const D3D12_ROOT_SIGNATURE_DESC *pRootSignature,
  [in]            D3D_ROOT_SIGNATURE_VERSION      Version,
  [out]           ID3DBlob                        **ppBlob,
  [out, optional] ID3DBlob                        **ppErrorBlob
);

參數

[in] pRootSignature

類型:const D3D12_ROOT_SIGNATURE_DESC*

根簽章的描述,做為 D3D12_ROOT_SIGNATURE_DESC 結構的指標。

[in] Version

類型: D3D_ROOT_SIGNATURE_VERSION

指定根簽章版本的 D3D_ROOT_SIGNATURE_VERSION型別值。

[out] ppBlob

類型: ID3DBlob**

記憶體區塊的指標,接收 ID3DBlob 介面的指標,可用來存取序列化的根簽章。

[out, optional] ppErrorBlob

類型: ID3DBlob**

記憶體區塊的指標,可接收 ID3DBlob 介面的指標,您可以在沒有任何錯誤時用來存取序列化程式錯誤訊息,或 Null

傳回值

類型: HRESULT

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

備註

D3D12SerializeVersionedRootSignature已取代此函式,自 Windows 10 年度更新版起 (14393) 。

如果應用程式在程式上產生D3D12_ROOT_SIGNATURE_DESC資料結構,則必須在呼叫D3D12SerializeRootSignature中傳遞這個D3D12_ROOT_SIGNATURE_DESC的指標,以建立序列化表單。 然後,應用程式會將 ppBlob 指向 ID3D12Device::CreateRootSignature的序列化表單傳遞至其中。

如果著色器已在其中撰寫根簽章,則編譯的著色器將包含已序列化的根簽章。 在此情況下,將編譯的著色器 Blob 傳遞至 ID3D12Device::CreateRootSignature ,以取得執行時間根簽章物件。

函式簽章PFN_D3D12_SERIALIZE_ROOT_SIGNATURE會以 typedef 的形式提供,讓您可以使用動態連結技術 (GetProcAddress) ,而不是靜態連結。

範例

建立空的根簽章。

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

請參閱 D3D12 參考中的範例程式碼

需求

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

另請參閱

核心函式

建立根簽章