Функция D3D12SerializeRootSignature (d3d12.h)
Сериализует корневую сигнатуру версии 1.0, которую можно передать в ID3D12Device::CreateRootSignature.
Синтаксис
HRESULT D3D12SerializeRootSignature(
[in] const D3D12_ROOT_SIGNATURE_DESC *pRootSignature,
[in] D3D_ROOT_SIGNATURE_VERSION Version,
[out] ID3DBlob **ppBlob,
[out, optional] ID3DBlob **ppErrorBlob
);
Параметры
[in] pRootSignature
Тип: const D3D12_ROOT_SIGNATURE_DESC*
Описание корневой сигнатуры в качестве указателя на структуру D3D12_ROOT_SIGNATURE_DESC .
[in] Version
Тип: D3D_ROOT_SIGNATURE_VERSION
D3D_ROOT_SIGNATURE_VERSION типизированное значение, указывающее версию корневой сигнатуры.
[out] ppBlob
Тип: ID3DBlob**
Указатель на блок памяти, получающий указатель на интерфейс ID3DBlob , который можно использовать для доступа к сериализованной корневой сигнатуре.
[out, optional] ppErrorBlob
Тип: ID3DBlob**
Указатель на блок памяти, получающий указатель на интерфейс ID3DBlob , который можно использовать для доступа к сообщениям об ошибках сериализатора, или ЗНАЧЕНИЕ NULL , если ошибки отсутствуют.
Возвращаемое значение
Тип: HRESULT
Возвращает S_OK в случае успешного выполнения; в противном случае возвращает один из кодов возврата Direct3D 12.
Комментарии
Эта функция была заменена D3D12SerializeVersionedRootSignature в юбилейном обновлении Windows 10 (14393).
Если приложение процедурно создает структуру данных D3D12_ROOT_SIGNATURE_DESC , оно должно передать указатель на этот D3D12_ROOT_SIGNATURE_DESC в вызове D3D12SerializeRootSignature для создания сериализованной формы. Затем приложение передает сериализованную форму, в которую ppBlob указывает на ID3D12Device::CreateRootSignature.
Если шейдер был создан с корневой подписью, скомпилированный шейдер уже будет содержать сериализованную корневую сигнатуру. В этом случае передайте скомпилированный большой двоичный объект шейдера в ID3D12Device::CreateRootSignature , чтобы получить объект корневой сигнатуры среды выполнения.
Сигнатура функции PFN_D3D12_SERIALIZE_ROOT_SIGNATURE предоставляется в виде определения типа, что позволяет использовать методы динамического связывания (GetProcAddress) вместо статического связывания.
Примеры
Создайте пустую корневую подпись.
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)));
См. пример кода в справочнике по D3D12.
Требования
Целевая платформа | Windows |
Header | d3d12.h |
Библиотека | D3D12.lib |
DLL | D3D12.dll |