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 |