Заданием параметров GL_SPOT_CUTOFF и GL_SPOT_DIRECTION можно создавать источники света, которые будут иметь коническую направленность, как прожектор. По умолчанию значение параметра GL_SPOT_CUTOFF равно 180°, т. е. источник светит во всех направлениях в равной интенсивностью. Параметр GL_SPOT_CUTOFF определяет максимальный угол от направления источника, в котором распространяется свет от данного источника, он может принимать значение 180 (неконический источник) или от 0 до 90°.
Вообще говоря, интенсивность источника убывает с расстоянием (параметры этого убывания задаются при помощи параметров GL_CONSTANT_ ATTENUATION, GL_LINEAR_ATTENUATION и GL_QUADRATIC_ATTE-NUATION). Только собственное свечение материала и глобальная фоновая освещенность не подвержены ослабеванию с расстоянием.
Глобальное фоновое освещение можно задать при помощи команды
void glLightModel{if}v ( GL_LIGHT_MODEL_AMBIENT,
ambientColor );
Местонахождение наблюдателя оказывает влияние на блики на объектах. По умолчанию при расчетах освещенности считается, что наблюдатель находится в бесконечно удаленной точке, т. е. направление на наблюдателя постоянно для любой вершины. Можно включить более реалистическое oc-J
Гшва 4. Основы библиотеки OpenGL
вещение, когда направление на наблюдателя будет вычисляться отдельно для каждой вершины; для этого служит команда
glLightModeli ( GL_LIGHT_MODEL_LOCAL_VIEWER, GL_JTRUE );
Для задания освещения как лицевых, так и нелицевых граней (при этом для нелицевых граней вектор нормали переворачивается) служит следующая команда:
glLightModeli ( GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE );
При этом существует возможность отдельного задания свойств материала для каждой из сторон.
Свойства материала, из которого сделан объект, задаются при помощи следующей процедуры:
void glMaterial{if}[v] { GLenum face, GLenum pname,
TYPE param );
Параметр face указывает, для какой из сторон грани задается свойство, и принимает одно из следующих значений: GL_FRONT, GL_BACK, GL_FRONT_AND_BACK.
Параметр pname указывает, какое именно свойство материала задается. Возможные значения представлены в табл. 4.5.