Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Создает макет корневой подписи.
Синтаксис
HRESULT CreateRootSignature(
[in] UINT nodeMask,
[in] const void *pBlobWithRootSignature,
[in] SIZE_T blobLengthInBytes,
REFIID riid,
[out] void **ppvRootSignature
);
Параметры
[in] nodeMask
Тип: UINT
Для одной операции GPU задайте для этого значение нулю. Если есть несколько узлов 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)));
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Виндоус |
| Header | d3d12.h |
| Library | D3D12.lib |
| DLL | D3D12.dll |