Compartilhar via


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

Confira também

ID3D12Device