Função D3D12SerializeRootSignature (d3d12.h)
Serializa uma assinatura raiz versão 1.0 que pode ser passada para ID3D12Device::CreateRootSignature.
Sintaxe
HRESULT D3D12SerializeRootSignature(
[in] const D3D12_ROOT_SIGNATURE_DESC *pRootSignature,
[in] D3D_ROOT_SIGNATURE_VERSION Version,
[out] ID3DBlob **ppBlob,
[out, optional] ID3DBlob **ppErrorBlob
);
Parâmetros
[in] pRootSignature
Tipo: const D3D12_ROOT_SIGNATURE_DESC*
A descrição da assinatura raiz, como um ponteiro para uma estrutura D3D12_ROOT_SIGNATURE_DESC .
[in] Version
Tipo: D3D_ROOT_SIGNATURE_VERSION
Um valor de tipo D3D_ROOT_SIGNATURE_VERSION que especifica a versão da assinatura raiz.
[out] ppBlob
Tipo: ID3DBlob**
Um ponteiro para um bloco de memória que recebe um ponteiro para a interface ID3DBlob que você pode usar para acessar a assinatura raiz serializada.
[out, optional] ppErrorBlob
Tipo: ID3DBlob**
Um ponteiro para um bloco de memória que recebe um ponteiro para a interface ID3DBlob que você pode usar para acessar mensagens de erro do serializador ou NULL se não houver erros.
Valor retornado
Tipo: HRESULT
Retorna S_OK se tiver êxito; caso contrário, retornará um dos códigos de retorno do Direct3D 12.
Comentários
Essa função foi substituída por D3D12SerializeVersionedRootSignature a partir da Atualização de Aniversário do Windows 10 (14393).
Se um aplicativo gerar processualmente uma estrutura de dados D3D12_ROOT_SIGNATURE_DESC , ele deverá passar um ponteiro para esse D3D12_ROOT_SIGNATURE_DESC em uma chamada para D3D12SerializeRootSignature para tornar o formulário serializado. Em seguida, o aplicativo passa o formulário serializado para o qual ppBlob aponta para ID3D12Device::CreateRootSignature.
Se um sombreador tiver sido criado com uma assinatura raiz, o sombreador compilado já conterá uma assinatura raiz serializada nele. Nesse caso, passe o blob de sombreador compilado para ID3D12Device::CreateRootSignature para obter o objeto de assinatura raiz do runtime.
A assinatura de função PFN_D3D12_SERIALIZE_ROOT_SIGNATURE é fornecida como um typedef, para que você possa usar técnicas de vinculação dinâmica (GetProcAddress) em vez de vincular estaticamente.
Exemplos
Crie uma assinatura raiz vazia.
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)));
Consulte o código de exemplo na referência D3D12.
Requisitos
Plataforma de Destino | Windows |
Cabeçalho | d3d12.h |
Biblioteca | D3D12.lib |
DLL | D3D12.dll |