glEnable (lightName); Однако еще нужно активизировать процедуры освещения OpenGL, и для этого вызывается команда

glEnable (GL_LIGHTING); Затем поверхности объектов визуализируются с использованием расчета освещения, в котором учитываются вклады от всех включенных источников света.

ПОЛОЖЕНИЕ И ТИП ИСТОЧНИКА СВЕТА OpenGL

В OpenGL для идентификации положения источника света используется символьная константа свойства GL_POSITION. В действительности указанная символьная константа используется для одновременного задания двух свойств источника света: положения и типа. При освещении сцены в OpenGL могут использоваться два класса источников. Точечный излучатель может располагаться вблизи освещаемых объектов (локальный источник), или его можно считать бесконечно удаленным от сцены. Данная классификация не зависит от положения, выбранного для источника света. Для близлежащего источника свет излучается во всех направлениях, и положение источника света фигурирует в расчетах освещения. В то же время, излученный свет от удаленного источника может поступать только в одном направлении, и это направление одинаково для всех поверхностей сцены, независимо от выбранного положения источника света. Направление исходящих лучей источника, отнесенного к удаленным, вычисляется как направление от выбранного положения источника света к началу координат.

Чтобы задать тип света и координаты источника, используется четырехэлементный вектор, компоненты которого - числа с плавающей запятой. Первые три элемента этого вектора дают точку в глобальных координатах, а четвертый элемент используется для обозначения типа источника света. Если четвертому элементу вектора положения присвоить значение 0.0, свет будет принадлежать очень удаленному источнику (в OpenGL это называется направленным (directional) светом), а заданное положение источника света используется только для определения направления света. В противном случае свет идет от локального источника (в OpenGL это называется локальным (positional) светом), и положение источника используется в процедурах освещения для определения направления света к каждому объекту на сцене. В следующем примере кода свет 1 идет от локального источника, расположенного в точке (2,0; 0,0; 3,0), а свет 2 - от удаленного источника, излучающего в отрицательном направлении оси у.

GLfloat lightlPosType [ ] = {2.0, 0.0, 3.0, 1.0};

GLfloat light2PosType [ ] = {0.0, 1.0, 0.0, 0.0}; glLightfv (GL_LIGHT1, GL_POSITION, lightlPosType); glEnable (GL_LIGHT1);

glLightfv (GL_LIGHT2, GL_POSITION, light2PosType); glEnable (GL_LIGHT2); Если тип и положение источника света не задаются, значения по умолчанию равны (0.0,0.0,1.0,0.0), что указывает на удаленный источник, лучи света от которого распространяются по отрицательному направлению оси 2.

Положение источника света включается в описание сцены и вместе с положениями объектов преобразовывается в координаты наблюдения с помощью матриц геометрического преобразования и преобразования точки наблюдения. Следовательно, если требуется зафиксировать источник света относительно объектов на сцене, его положение задается после указания в программе геометрических преобразований и преобразований точки наблюдения. Однако, если требуется, чтобы источник света двигался при изменении точки наблюдения, его положение задается перед спецификацией преобразования точки наблюдения. Кроме того, если необходимо, чтобы источник света двигался вокруг стационарной сцены, к его положению можно применить преобразование трансляции или вращения.


⇐ вернуться назад | | далее ⇒