Компьютерная графика | ||||||||||||||||||||||||||||||
теория, алгоритмы, примеры на С++ и OpenGL | ||||||||||||||||||||||||||||||
2D теория | 3D теория | OpenGL | Обратная связь / Авторам | |||||||||||||||||||||||||||
Мы vkontakte.ru ![]() ![]() ДрузьяСловарь синонимов русского языка |
Источники светаПосле того, как задана необходимая геометрия (нормали) необходимо разместить на сцене один или несколько источников света, настроить их свойства и включить их. В зависимости от реализации OpenGL на сцене могут присутствовать восемь и более источников света. Включить нулевой источник света можно командой: glEnable(GL_LIGHT0); Остальные включаются аналогичным способом, где вместо GL_LIGHT0 указывается GL_LIGHTi. После того, как источник включен, необходимо задать его параметры. В OpenGL существует три типа источников света:
Для управления свойствами источника света используются команды glLight*: glLightf(GLenum light, GLenum pname, GLfloat param); glLightfv(GLenum light, GLenum pname, const GLfloat *param); Параметр light указывает OpenGL для какого источника света задаются параметры. Команда glLightf используется для задания скалярных параметров, а glLightfv используется для задания векторных характеристик источников света. Задание компонент излученияДля источника света можно задать фоновую, рассеянную и зеркальную компоненты излучения.
Остальные параметры являются специфическими для каждого типа источников света, описанных ниже. Источники направленного светаИсточника света такого типа находится в бесконечности и свет от него распространяется в заданном направлении. Идеально подходит для создания равномерного освещения. Хорошим примером источника направленного света может служить Солнце. У источника направленного света, кроме компонент излучения, можно задать только направление.
Первые три компоненты (x, y, z) задают вектор направления, а компонента w всегда равна нулю (иначе источник превратится в точечный). Точечные источники светаТочечный источник света расположен в некоторой точке пространства и излучает во всех направлениях. Т.к. расстояние между источником и освещаемой точкой конечно, то можно задать закон убывания интенсивности излучения с расстоянием. Стандартные средства OpenGL позволяют задавать такой закон в виде обратно-квадратичной функции от расстояния:
|