четверг, 3 декабря 2009 г.

Минимальный набор функций OpenGL для освещения сцены

Освещение сцены OpenGL необходимо не только для ее собственно освещения, но без реализации освещения сцена не будет восприниматься как трехмерная. Приведем минимальный набор функций для релизации этой возможности:
1)По умолчанию машина OpenGL находиться в состоянии с выключенным освещением. Включим его:
glEnable(GL_LIGHTING);
2)Но это только "состояние" этой машины. Нужно теперь "включить" источник света. Он может быть не один. На каждый - своя команда:
glEnable(GL_LIGHT0);
3)Кроме просто включить, надо еще установить свойства каждого источника света:
glLightfv(GL_LIGHT0, GL_POSITION, l0_pos);
glLightfv(GL_LIGHT0, GL_DIFFUSE , l0_dif);
Первый параметр указывает источник, второй - свойство, третий - значение свойства. Этих двух параметров достаточно для "минимальной" функциональности.
А вообще параметров целое множество:
а)Параметры GL_SPOT_EXPONENT,GL_SPOT_CUTOFF,GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION и GL_QUADRATIC_ATTENUATION устанавливаются функциями glLightf() и glLighti().
б)Параметры GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR,GL_POSITION, GL_SPOT_CUTOFF, GL_SPOT_DIRECTION, GL_SPOT_EXPONENT,GL_CONSTANT_ATTENUATION, GL_LINEAR_ATTENUATION и GL_QUADRATIC_ATTENUATION утанавливаются функциями glLightfv() или glLightiv()
4)Свойства есть не только у света, но и у материала, который освещаеться:
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, par_mat);Первый параметр функции определяет сторону материала, для которой задаются свойства, второй задает свойство, третий - его значение.

Комментариев нет: