ЦВЕТА И-ТОЧНИКОВ -ВЕТА OpenGL
В отличие от реальных источников, свет в OpenGL имеет три различных свойства цветов RGBA. В данной эмпирической схеме эффекты освещения сцены позволяют изменять три цвета источника света. Данные цвета задаются с использованием символьных констант свойств цвета GL_AMBIENT, GL_DIFFUSE и GL_SPECULAR. Чтобы задать все эти цвета, указывается четырехэлементный массив значений с плавающей точкой. Компоненты каждого цвета задаются в порядке (R, G, В, А), и альфа-компонент используется только при активных процедурах смешивания цветов. Как можно догадаться из названий символьных констант свойств цвета, один цвет источника света дает вклад в фоновое (ambient) освещение сцены, другой цвет используется при расчете диффузного освещения (diffuse), а третий задает эффекты зеркального отражения на поверхности. Реальные источники света характеризуются одним цветом, но три цвета источников OpenGL позволяют создавать различные эффекты освещения. Ниже приведен пример кода, в котором цвет фонового освещения локального источника света GL_LIGHT3 - черный, а цвет диффузного освещения и зеркального отражения - белый.
GLfloat blackColor [ ] = {0.0, 0.0, 0.0, 1.0};
GLfloat whiteColor [ ] = {1.0, 1.0, 1.0, 1.0};
glLightfv (GL_LIGHT3, GL_AMBIENT, blackColor);
glLightfv (GL_LIGHT3, GL_DIFFUSE, whiteColor);
glLightfv (GL_LIGHT3, GL_SPECULAR, whiteColor); Значения по умолчанию для источника света 0 - черное фоновое освещение, белое диффузное и зеркальное отражение. Все остальные источники света характеризуются по умолчанию тремя черными цветами.
КОЭФФИЦИЕНТЫ РАДИАЛЬНОГО ЗАТУХАНИЯ ИНТЕН-ИВНО-ТИ И-ТОЧНИКОВ -ВЕТА OpenGL
Радиальное затухание интенсивности можно применить к свету, излучаемому локальным источником OpenGL, и процедурам расчета освещения OpenGL, в которых данное затухание вычисляется согласно уравнению (10.2), в котором di - расстояние от положения источника света до объекта. Тремя константами свойств OpenGL для радиального затухания интенсивности являются GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION и GL_QUADRATIC_ATTENUATION, которые соответствуют коэффициентам а о, ai и в уравнении (10.2). Для задания всех коэффициентов затухания могут использоваться положительные целые числа или положительные величины с плавающей запятой. Например, значения коэффициентов радиального затухания можно задать следующим образом:
Рис. 10.113. Круговой конус света, излученного источником OpenGL. Угловые границы конуса света, измеряемые от оси конуса, равны б(, а через а обозначен угол между осью и вектором направления на объект д1Ыд]^:Е (6Ь_Ы-НТб, 6Ь_-0ЫЗТАЫТ_АТТЕЖ1АТ10Ы, 1.5); glLightf (6Ь_Ы-НТ6, 6Ь_ЬШЕАК_АТТЕШАТ1(Ж, 0.75); glLightf (-Ь_Ы-НТ6, -Ь_0иАОНАТ1-_АТТЕШАТ1ОЫ, 0.4); После того как значения заданы, ко всем трем цветам (фоновое освещение, диффузное и зеркальное отражение) применяется функция радиального затухания. По умолчанию значения коэффициентов затухания - «о = 1• 0, а ] - 0,0 я а2 = 0, 0. -ледовательно, по умолчанию радиального затухания нет: ДгаЛаМеп = 1,0. Хотя радиальное затухание может давать более реалистичные изображения, соответствующие расчеты являются объемными.