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 |