GLfloat lightO_pos[]={1.0, 2.0, 3.0, 1.0};
Если четвертый компонент этой точки равен нулю, то точечный источник превращается в удаленный, для которого существенно только направление лучей:
GLfloat light0_dir[]={1.0, 2.0, 3.0, 0.0};
Далее определяется цветовой состав фоновой, диффузной и зеркальной составляющих источника. Если в рассматриваемом примере источник имеет белую зеркальную составляющую, а фоновая и диффузная должны быть красными, то фрагмент программы, формирующий источник, выглядит следующим образом:
GLfloat diffuse0[]={1.0, 0.0, 0.0, 1.0}; GLfloat ambient0[]={1.0, 0.0, 0.0, 1.0}; GLfloat specular0[]={1.0, 1.0, 1.0, 1.0};
glEnable(GL_LIGHTING); glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_POSITION, light0_pos); glLightfv(GL_LIGHT0, GL_AMBIENT, ambientO); glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseO); glLightfv(GL_LIGHT0, GL_SPECULAR, specular0);
Обратите внимание на то, что в программе функция glEnable() вызывается дважды: сначала для включения режима анализа освещения, а затем для включения в сцену конкретного источника света.
В сцену можно включить и глобальное фоновое освещение, которое не связано ни с каким отдельным источником. Если, например требуется слабо подсветить все объекты сцены белым цветом, в программу следует включить такой фрагмент кода:
GLfloat global_ambient[]={0.1, 0.1, 0.1, 1.0};
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, global_ambient);
В модели освещения член, учитывающий расстояние до источника, имеет вид
a+bd +cd2
и постоянную, линейную и квадратичную составляющие. Соответствующие коэффициенты для каждого источника задаются индивидуально с помощью функции установки скалярных параметров glLightf ( ), например:
glLightf(GL_LIGHT0, GL_C0NSTANT_ATTENUATI0N, а); Для преобразования точечного источника в прожектор нужно задать направление луча прожектора (GL_SP0T_DIRECTI0N), показатель функции распределения интенсивности (GL_SPOT_EXPONENT) и угол рассеяния луча (GL_SP0T CUTOFF). Эти параметры устанавливаются с помощью функций glLightf ( ) и glLightf v( ).
В OpenGL существуют еще два параметра, имеющих отношение к моделированию освещения, - GL_LIGHT_M0DEL_L0CAL_VIEWER и GL_LIGHT_M0DEL_TW0__SIDE. С помощью параметра GL_LIGHT_M0DEL_L0CAL_VIEWER в графической системе устанавливается режим "близкого"