Метод ID3DXEffectCompiler::CompileShader
Компилирует шейдер из эффекта, содержащего одну или несколько функций.
Синтаксис
HRESULT CompileShader(
[in] D3DXHANDLE hFunction,
[in] LPCSTR pTarget,
[in] DWORD Flags,
[out, retval] LPD3DXBUFFER *ppShader,
[out, retval] LPD3DXBUFFER *ppErrorMsgs,
[out] LPD3DXCONSTANTTABLE *ppConstantTable
);
Параметры
-
hFunction [in]
-
Тип: D3DXHANDLE
Уникальный идентификатор компилируемых функций. Это значение не должно иметь значение NULL. См. раздел Дескрипторы (Direct3D 9).
-
pTarget [in]
-
Тип: LPCSTR
Указатель на профиль шейдера, определяющий набор инструкций шейдера. Список доступных профилей см. в разделе D3DXGetVertexShaderProfile или D3DXGetPixelShaderProfile .
-
Флаги [in]
-
Тип: DWORD
Параметры компиляции, определенные различными флагами. Компилятор Direct3D 10 HLSL теперь используется по умолчанию. Дополнительные сведения см. в разделе Флаги D3DXSHADER .
-
ppShader [out, retval]
-
Тип: LPD3DXBUFFER*
Буфер, содержащий скомпилированный шейдер. Шейдер компилятора представляет собой массив DWORD. Дополнительные сведения о доступе к буферу см. в разделе ID3DXBuffer.
-
ppErrorMsgs [out, retval]
-
Тип: LPD3DXBUFFER*
Буфер, содержащий по крайней мере первое сообщение об ошибке компиляции. Сюда входят ошибки компилятора эффектов и высокоуровневые ошибки компиляции языка. Дополнительные сведения о доступе к буферу см. в разделе ID3DXBuffer.
-
ppConstantTable [out]
-
Тип: LPD3DXCONSTANTTABLE*
Возвращает интерфейс ID3DXConstantTable , который можно использовать для доступа к константам шейдера. Это значение может иметь значение NULL. Если вы компилируете приложение с учетом большого адреса (т. е. используете параметр компоновщика /LARGEADDRESSAWARE для обработки адресов размером более 2 ГБ), этот параметр использовать нельзя, и ему необходимо присвоить значение NULL. Вместо этого необходимо использовать функцию D3DXGetShaderConstantTableEx , чтобы получить таблицу констант шейдера, внедренную в шейдер. В этом вызове D3DXGetShaderConstantTableEx необходимо передать флаг D3DXCONSTTABLE_LARGEADDRESSAWARE параметру Flags , чтобы указать для доступа до 4 ГБ виртуального адресного пространства.
Возвращаемое значение
Тип: HRESULT
Если метод выполнен успешно, возвращаемое значение будет S_OK.
Если аргументы недопустимы, метод возвращает D3DERR_INVALIDCALL.
Если метод завершается сбоем, возвращаемое значение будет E_FAIL.
Комментарии
Целевые объекты можно указать для вершинных шейдеров, пиксельных шейдеров и функций заливки текстур.
Цели | Функции |
---|---|
Целевые объекты вершинного шейдера | vs_1_1, vs_2_0, vs_2_sw, vs_3_0 |
Целевые объекты шейдера пикселей | ps_1_1, ps_1_2, ps_1_3, ps_1_4, ps_2_0, ps_2_sw, ps_3_0 |
Целевые объекты заливки текстуры | tx_0, tx_1 |
Этот метод компилирует шейдер из функции, написанной на C-подобном языке. Подробнее: HLSL.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел