Поделиться через


Функция 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

См. также раздел

Основные функции

Создание корневой подписи