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


Функция D3DCompile (d3dcompiler.h)

Компилируйте код HLSL или файл эффекта в байт-код для заданного целевого объекта.

Синтаксис

HRESULT D3DCompile(
  [in]            LPCVOID                pSrcData,
  [in]            SIZE_T                 SrcDataSize,
  [in, optional]  LPCSTR                 pSourceName,
  [in, optional]  const D3D_SHADER_MACRO *pDefines,
  [in, optional]  ID3DInclude            *pInclude,
  [in, optional]  LPCSTR                 pEntrypoint,
  [in]            LPCSTR                 pTarget,
  [in]            UINT                   Flags1,
  [in]            UINT                   Flags2,
  [out]           ID3DBlob               **ppCode,
  [out, optional] ID3DBlob               **ppErrorMsgs
);

Параметры

[in] pSrcData

Тип: LPCVOID

Указатель на некомпилированные данные шейдера; код ASCII HLSL или скомпилированный эффект.

[in] SrcDataSize

Тип: SIZE_T

Длина pSrcData.

[in, optional] pSourceName

Тип: LPCSTR

Этот параметр можно использовать для строк, указывающих сообщения об ошибках. Если не используется, задайте значение NULL.

[in, optional] pDefines

Тип: const D3D_SHADER_MACRO*

Необязательный массив D3D_SHADER_MACRO структур, определяющих макросы шейдеров. Каждое определение макроса содержит имя и определение, завершаемое значением NULL. Если не используется, задайте значение NULL. Последняя структура в массиве служит признаком конца и должна иметь для всех членов значение NULL.

[in, optional] pInclude

Тип: ID3DInclude*

Необязательный элемент. Указатель на ID3DInclude для обработки включаемого файла. Установка значения NULL приведет к ошибке компиляции, если шейдер содержит #include. Вы можете передать макрос D3D_COMPILE_STANDARD_FILE_INCLUDE , который является указателем на обработчик включения по умолчанию. Этот обработчик включения по умолчанию включает файлы, относящиеся к текущему каталогу, и файлы, относящиеся к каталогу исходного исходного файла. При использовании D3D_COMPILE_STANDARD_FILE_INCLUDE необходимо указать имя исходного файла в параметре pSourceName ; компилятор наследует исходный относительный каталог от pSourceName.

#define D3D_COMPILE_STANDARD_FILE_INCLUDE ((ID3DInclude*)(UINT_PTR)1)

[in, optional] pEntrypoint

Тип: LPCSTR

Имя функции точки входа шейдера, с которой начинается выполнение шейдера. При компиляции с помощью профиля fx (например, fx_4_0, fx_5_0 и т. д.) D3DCompile игнорирует pEntrypoint. В этом случае рекомендуется задать для pEntrypointзначение NULL , так как рекомендуется присвоить параметру указателя значение NULL , если вызываемая функция не будет его использовать. Для всех остальных профилей шейдеров требуется допустимая точка pEntrypoint .

[in] pTarget

Тип: LPCSTR

Строка, указывающая целевой объект шейдера или набор функций шейдера для компиляции. Целевым объектом шейдера может быть модель шейдера 2, модель шейдера 3, модель шейдера 4 или модель шейдера 5. Целевой объект также может быть типом эффекта (например, fx_4_1). Сведения о целевых объектах, которые поддерживаются различными профилями, см. в разделе Указание целевых объектов компилятора.

[in] Flags1

Тип: UINT

Флаги, определенные константами компиляции D3D.

[in] Flags2

Тип: UINT

Флаги, определенные константами эффекта компиляции D3D. При компиляции шейдера, а не файла эффекта, D3DCompile игнорирует Flags2; Рекомендуется задать для Параметра Flags2 значение 0, так как рекомендуется задать для параметра, не указывающего, нулевое значение, если вызываемая функция не будет использовать его.

[out] ppCode

Тип: ID3DBlob**

Указатель на переменную, получающую указатель на интерфейс ID3DBlob , который можно использовать для доступа к скомпилированному коду.

[out, optional] ppErrorMsgs

Тип: ID3DBlob**

Указатель на переменную, получающую указатель на интерфейс ID3DBlob , который можно использовать для доступа к сообщениям об ошибках компилятора, или значение NULL , если ошибок нет.

Возвращаемое значение

Тип: HRESULT

Возвращает один из кодов возврата Direct3D 11.

Комментарии

Разница между D3DCompile и D3DCompile2 заключается в том, что последний метод принимает некоторые необязательные параметры, которые можно использовать для управления некоторыми аспектами создания байт-кода. Если такая дополнительная гибкость не требуется, производительность от использования D3DCompile2 не повышается.

Требования

Требование Значение
Целевая платформа Windows
Header d3dcompiler.h
Библиотека d3dcompiler.lib
DLL d3dcompiler_47.dll

См. также

Функции