Método ID3D12Device::CreateRootSignature (d3d12.h)
Cria um layout de assinatura raiz.
Sintaxe
HRESULT CreateRootSignature(
[in] UINT nodeMask,
[in] const void *pBlobWithRootSignature,
[in] SIZE_T blobLengthInBytes,
REFIID riid,
[out] void **ppvRootSignature
);
Parâmetros
[in] nodeMask
Tipo: UINT
Para uma única operação de GPU, defina isso como zero. Se houver vários nós de GPU, defina bits para identificar os nós (adaptadores físicos do dispositivo) aos quais a assinatura raiz deve ser aplicada. Cada bit na máscara corresponde a um único nó. Consulte Sistemas de vários adaptadores.
[in] pBlobWithRootSignature
Tipo: const void*
Um ponteiro para os dados de origem da assinatura serializada.
[in] blobLengthInBytes
Tipo: SIZE_T
O tamanho, em bytes, do bloco de memória para o qual pBlobWithRootSignature aponta.
riid
Tipo: REFIID
O GUID (identificador global exclusivo) para a interface de assinatura raiz. Consulte Observações. Um parâmetro de entrada.
[out] ppvRootSignature
Tipo: void**
Um ponteiro para um bloco de memória que recebe um ponteiro para a assinatura raiz.
Retornar valor
Tipo: HRESULT
Retorna S_OK se tiver êxito; caso contrário, retornará um dos códigos de retorno do Direct3D 12.
Esse método retornará E_INVALIDARG se o blob para o qual pBlobWithRootSignature aponta for inválido.
Comentários
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 pBlobWithRootSignature em uma chamada para ID3D12Device::CreateRootSignature.
O REFIID, ou GUID, da interface para o layout de assinatura raiz pode ser obtido usando a macro __uuidof(). Por exemplo, __uuidof(ID3D12RootSignature) obterá o GUID da interface para uma assinatura raiz.
Exemplos
O exemplo D3D12HelloTriangle usa ID3D12Device::CreateRootSignature da seguinte maneira:
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)));
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Windows |
Cabeçalho | d3d12.h |
Biblioteca | D3D12.lib |
DLL | D3D12.dll |