Пользователь может определить до восьми источников света и определить их свойства, такие, как цвет, положение и направление. Для задания этих свойств служит процедура
void glLight{if}[v](GLenum light, GLenum pname, TYPE param );
Эта процедура задает параметры для источника света light, принимающего значения GL_LIGHT0, GLJLIGHT1.....GL_LIGHT7. Параметр pname
определяет характеристику источника света, которая задается последним параметром. Возможные значения для рпате приведены в табл. 4.4.
Таблица 4.4
Значение |
Значение no умолчанию |
Комментарий |
GL_ AMBIENT | (0,0,0,1) |
Фоновая RGBA-ocвeщeннocть |
GL.DIFFUSE | (1.1,1.1) |
Диффузная 1*СВА-освещенность |
GLJ5PECULAR | (1.1,1.1) |
Бликовая (Фоига) RGBA-ocвeщeннocть |
GL_POSITION | (0,0,1,0) |
(х, у, г, V/) позиция источника света |
GL_SPOT_ DIRECTION | (0,0,-1) |
(х, у, г) направление для конических источников света |
GL_SPOT_ EXPONENT |
Показатель степени в формуле Фонга |
|
GL_SPOT_ CUTOFF |
Половина угла для конических источников света |
|
GL_CONSTANT_ ATTENUATION |
Отсутствует |
Параметр Кг (ур-ние 4.4) |
GL_LINEAR_ ATTENUATION |
Отсутствует |
Параметр К| (ур-ние 4.4) |
GL_QUADRATIC_ ATTENUATION |
Отсутствует |
Параметр К, (ур-ние 4.4) |
Замечание. Значения по умолчанию GL_DIFFUSE и GL_SPECULAR в таблице относятся только к источнику света GL_LIGHT0, для остальных источников света значение по умолчанию есть (0,0,0, 1).
Для использования источников света надо разрешить применение расчета освещенности командой
glEnable ( GL_LIGHTING );
и разрешить (включить) соответствующий источник света при помощи команды glEnable, например
glEnable ( GL_LIGHT0 );
Источник света можно рассматривать как имеющий вполне определенные координаты и светящий во всех направлениях или как направленный источник, находящийся в бесконечно удаленной точке и светящий в заданном направлении (д:, у, г).
Если параметр w в команде GL_POSITION равен нулю, то соответствующий источник света является направленным и светит в направлении (х, у, г). Если же w отлично от нуля, то это позиционный источник света, находящийся в точке с координатами (xAv, y/w, zAv).