Метод ID3D12Device::CreateRootSignature (d3d12.h)
Создает макет корневой подписи.
Синтаксис
HRESULT CreateRootSignature(
[in] UINT nodeMask,
[in] const void *pBlobWithRootSignature,
[in] SIZE_T blobLengthInBytes,
REFIID riid,
[out] void **ppvRootSignature
);
Параметры
[in] nodeMask
Тип: UINT
Для одной операции GPU установите значение 0. Если имеется несколько узлов GPU, задайте биты, чтобы определить узлы (физические адаптеры устройства), к которым должна применяться корневая сигнатура. Каждый бит в маске соответствует одному узлу. См. раздел Системы с несколькими адаптерами.
[in] pBlobWithRootSignature
Тип: const void*
Указатель на исходные данные для сериализованной сигнатуры.
[in] blobLengthInBytes
Тип: SIZE_T
Размер (в байтах) блока памяти, на который указывает pBlobWithRootSignature .
riid
Тип: REFIID
Глобальный уникальный идентификатор (GUID) для интерфейса корневой сигнатуры. См. заметки. Входной параметр.
[out] ppvRootSignature
Тип: void**
Указатель на блок памяти, который получает указатель на корневую сигнатуру.
Возвращаемое значение
Тип: HRESULT
Возвращает S_OK в случае успешного выполнения; в противном случае возвращает один из кодов возврата Direct3D 12.
Этот метод возвращает E_INVALIDARG , если большой двоичный объект, на который указывает pBlobWithRootSignature , является недопустимым.
Комментарии
Если приложение процедурно создает структуру данных D3D12_ROOT_SIGNATURE_DESC , оно должно передать указатель на этот D3D12_ROOT_SIGNATURE_DESC в вызове D3D12SerializeRootSignature для создания сериализованной формы. Затем приложение передает сериализованную форму в pBlobWithRootSignature в вызове ID3D12Device::CreateRootSignature.
Идентификатор REFIID или GUID интерфейса для макета корневой сигнатуры можно получить с помощью макроса __uuidof(). Например, __uuidof(ID3D12RootSignature) получит GUID интерфейса в корневую сигнатуру.
Примеры
В примере D3D12HelloTriangle используется ID3D12Device::CreateRootSignature следующим образом:
Создайте пустую корневую подпись.
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)));
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | d3d12.h |
Библиотека | D3D12.lib |
DLL | D3D12.dll |