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


Функция D3DXCompileShader

Скомпилируйте файл шейдера.

Примечание

Вместо использования этой устаревшей функции рекомендуется выполнять компиляцию в автономном режиме с помощью компилятора командной строки Fxc.exe или API D3DCompile .

 

Синтаксис

HRESULT D3DXCompileShader(
  _In_        LPCSTR              pSrcData,
  _In_        UINT                srcDataLen,
  _In_  const D3DXMACRO           *pDefines,
  _In_        LPD3DXINCLUDE       pInclude,
  _In_        LPCSTR              pFunctionName,
  _In_        LPCSTR              pProfile,
  _In_        DWORD               Flags,
  _Out_       LPD3DXBUFFER        *ppShader,
  _Out_       LPD3DXBUFFER        *ppErrorMsgs,
  _Out_       LPD3DXCONSTANTTABLE *ppConstantTable
);

Параметры

pSrcData [in]

Тип: LPCSTR

Указатель на строку, содержащую шейдер.

srcDataLen [in]

Тип: UINT

Длина данных в байтах.

pDefines [in]

Тип: const D3DXMACRO*

Необязательный массив структур D3DXMACRO с завершением NULL. Это значение может иметь значение NULL.

pВключение [in]

Тип: LPD3DXINCLUDE

Необязательный указатель интерфейса ID3DXInclude, используемый для обработки директив #include. Если это значение равно NULL, #includes будет учитываться при компиляции из файла или вызвать ошибку при компиляции из ресурса или памяти.

pFunctionName [in]

Тип: LPCSTR

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

pProfile [in]

Тип: LPCSTR

Указатель на профиль шейдера, определяющий набор инструкций шейдера. Список доступных профилей см. в разделе D3DXGetVertexShaderProfile или D3DXGetPixelShaderProfile .

Флаги [in]

Тип: DWORD

Параметры компиляции, определенные различными флагами. Компилятор Direct3D 10 HLSL теперь используется по умолчанию. Дополнительные сведения см. в разделе Флаги D3DXSHADER .

ppShader [out]

Тип: LPD3DXBUFFER*

Возвращает буфер, содержащий созданный шейдер. Этот буфер содержит скомпилированный код шейдера, а также все встроенные сведения об отладке и таблице символов.

ppErrorMsgs [out]

Тип: LPD3DXBUFFER*

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

ppConstantTable [out]

Тип: LPD3DXCONSTANTTABLE*

Возвращает интерфейс ID3DXConstantTable , который можно использовать для доступа к константам шейдера. Это значение может иметь значение NULL. Если вы компилируете приложение с учетом большого адреса (т. е. используете параметр компоновщика /LARGEADDRESSAWARE для обработки адресов размером более 2 ГБ), этот параметр использовать нельзя, и ему необходимо присвоить значение NULL. Вместо этого необходимо использовать функцию D3DXGetShaderConstantTableEx , чтобы получить таблицу констант шейдера, внедренную в шейдер. В этом вызове D3DXGetShaderConstantTableEx необходимо передать флаг D3DXCONSTTABLE_LARGEADDRESSAWARE параметру Flags , чтобы указать для доступа до 4 ГБ виртуального адресного пространства.

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

Тип: HRESULT

Если функция выполняется успешно, возвращаемое значение будет D3D_OK. В случае сбоя функции возвращается одно из следующих значений: D3DERR_INVALIDCALL, D3DXERR_INVALIDDATA E_OUTOFMEMORY.

Требования

Требование Значение
Заголовок
D3DX9Shader.h
Библиотека
D3dx9.lib

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

Функции шейдера

D3DXCompileShaderFromFile

D3DXCompileShaderFromResource