Compartir a través de


Método ID3D12Device::CreateRootSignature (d3d12.h)

Crea un diseño de firma raíz.

Sintaxis

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 una sola operación de GPU, establézcalo en cero. Si hay varios nodos de GPU, establezca bits para identificar los nodos (adaptadores físicos del dispositivo) a los que se va a aplicar la firma raíz. Cada bit de la máscara corresponde a un único nodo. Consulte Sistemas de varios adaptadores.

[in] pBlobWithRootSignature

Tipo: const void*

Puntero a los datos de origen de la firma serializada.

[in] blobLengthInBytes

Tipo: SIZE_T

Tamaño, en bytes, del bloque de memoria al que apunta pBlobWithRootSignature .

riid

Tipo: REFIID

Identificador único global (GUID) de la interfaz de firma raíz. Vea la sección Comentarios. Parámetro de entrada.

[out] ppvRootSignature

Tipo: void**

Puntero a un bloque de memoria que recibe un puntero a la firma raíz.

Valor devuelto

Tipo: HRESULT

Devuelve S_OK si se ejecuta correctamente; de lo contrario, devuelve uno de los códigos de retorno de Direct3D 12.

Este método devuelve E_INVALIDARG si el blob al que apunta pBlobWithRootSignature no es válido.

Comentarios

Si una aplicación genera de forma procesal una estructura de datos D3D12_ROOT_SIGNATURE_DESC , debe pasar un puntero a este D3D12_ROOT_SIGNATURE_DESC en una llamada a D3D12SerializeRootSignature para crear el formulario serializado. A continuación, la aplicación pasa el formulario serializado a pBlobWithRootSignature en una llamada a ID3D12Device::CreateRootSignature.

El REFIID, o GUID, de la interfaz al diseño de firma raíz se puede obtener mediante la macro __uuidof(). Por ejemplo, __uuidof(ID3D12RootSignature) obtendrá el GUID de la interfaz a una firma raíz.

Ejemplos

El ejemplo D3D12HelloTriangle usa ID3D12Device::CreateRootSignature de la siguiente manera:

Cree una firma raíz vacía.

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 Value
Plataforma de destino Windows
Encabezado d3d12.h
Library D3D12.lib
Archivo DLL D3D12.dll

Consulte también

ID3D12Device