Функция D3DXCompileShaderFromFile
Скомпилируйте файл шейдера.
Примечание
Вместо использования этой устаревшей функции рекомендуется выполнять компиляцию в автономном режиме с помощью компилятора командной строки Fxc.exe или API D3DCompile .
Синтаксис
HRESULT D3DXCompileShaderFromFile(
_In_ LPCTSTR pSrcFile,
_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
);
Параметры
-
pSrcFile [in]
-
Тип: LPCTSTR
Указатель на строку, указывающую имя файла.
-
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_NOTIMPL E_OUTOFMEMORY.
E_NOTIMPL возвращается, если вы используете шейдеры версии 1.1 (vs_1_1 и ps_1_1).
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел