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