Функция D3DXSHEvalHemisphereLight (D3dx9math.h)
Примечание
Библиотека служебных программ D3DX (D3DX 9, D3DX 10 и D3DX 11) устарела и не поддерживается для приложений Магазина Windows.
Примечание
Вместо этой функции рекомендуется использовать функцию библиотеки сферических гармоникXMSHEvalHemisphereLight.
Оценивает свет, представляющий собой линейную интерполяцию между двумя цветами поверх сферы.
Синтаксис
HRESULT D3DXSHEvalHemisphereLight(
_In_ UINT Order,
_In_ const D3DXVECTOR3 *pDir,
_In_ D3DXCOLOR Top,
_In_ D3DXCOLOR Bottom,
_In_ FLOAT *pROut,
_In_ FLOAT *pGOut,
_In_ FLOAT *pBOut
);
Параметры
-
Order [in]
-
Тип: UINT
Порядок вычисления сферической гармоники (SH). Должен находиться в диапазоне D3DXSH_MINORDER для D3DXSH_MAXORDER включительно. При вычислении создаются коэффициенты Order². Степень оценки — Order - 1.
-
pDir [in]
-
Тип: const D3DXVECTOR3*
Указатель на вектор направления оси полушария (x, y, z), в котором вычисляются базовые функции SH. См. заметки.
-
Начало [в]
-
Тип: D3DXCOLOR
Цвет неба.
-
Снизу [в]
-
Тип: D3DXCOLOR
Цвет земли.
-
pROut [in]
-
Тип: FLOAT*
Указатель на выходной вектор SH для красного компонента.
-
pGOut [in]
-
Тип: FLOAT*
Указатель на выходной вектор SH для зеленого компонента.
-
pBOut [in]
-
Тип: FLOAT*
Указатель на выходной вектор SH для синего компонента.
Возвращаемое значение
Тип: HRESULT
Если функция выполняется успешно, возвращаемое значение будет D3D_OK. Если функция завершается сбоем, возвращаемое значение может быть следующим: D3DERR_INVALIDCALL.
Комментарии
Интерполяция выполняется линейно между двумя точками, а не над поверхностью сферы (то есть, если ось была (0,0,1), она линейна в Z, а не в азимутальном углу). Результирующая функция сферического освещения нормализуется таким образом, чтобы точка на идеально рассеянной поверхности без затенения и нормальной направленности в направлении pDir привела бы к выходу сияния со значением 1 (если верхний цвет был белым, а нижний цвет был черным). Это очень простая модель, где Top представляет интенсивность "неба", а нижняя — интенсивность "земли".
На шаре с радиусом единицы, как показано на следующем рисунке, направление можно указать просто с помощью тета, угол относительно оси Z в правой руке и phi, угол от z.
В следующих уравнениях показана связь между декартовыми координатами (x, y, z) и сферическими (theta, phi) координатами на единичной сфере. Угол теты меняется в диапазоне от 0 до 2 пи, а phi — от 0 до пи.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел