Можно также разложить источник света на различные цвета. OpenGL позволяет присвоить различный цвет каждому из трех типов света, испускаемого источником: фоновому, диффузному и зеркальному. Может показаться странным, что источник испускает фоновый свет. Однако этот тип освещения по-прежнему рассматривается как в равенстве (8.7): глобальный всенаправленный свет, полностью заливающий сцену. Преимущество привязки фонового света к источнику заключается в том, что его можно включать и выключать во время работы приложения. (Кроме этого, OpenGL снабжен истинно фоновым

1 Здесь и всюду тип данных f 1 oat будет, вероятно, работать не хуже, чем тип GLf 1 oat. Однако использование типа GLf 1 oat сделает ваш код более совместимым с другими программными средами OpenGL.

8.2. Введение в модели закрашивания светом, не связанным ни с каким источником, однако его мы рассмотрим позднее, в связи с «моделями освещения».)

С помощью приведенного ниже кода определяются массивы для хранения цветов, испускаемых источниками света. Эти массивы затем передаются в функцию glLightfvO:

GLfloat ambO[] - {0.2. 0.4. 0.6. 1.0}:
// define some colors

// определяем некоторые цвета

GLfloat diffOH - {0.8. 0.9. 0.5. 1.0}:
GLfloat spec0[] - {1.0. 0.8. 1.0. 1.0}:
g1Lightfv(GL_LIGHT0. GL_AMBIENT, ambO);
// attach them to LIGHT0

// привязываем их к LIGHTO

glLightfv(GL_LIGHT0, GLJIFFUSE. diffO):
g1Lightfv(GL_LIGHT0. GL_SPECULAR. specO);

Цвета задаются в так называемом формате RGBA, что означает: Red (красный), Green (зеленый), Blue (синий) и «Alpha» (альфа). Величина alpha иногда используется для смешения двух цветов на экране; это будет рассматриваться в главе 10. Для наших целей здесь alpha = 1,0.

Источники света имеют различные значения по умолчанию.

Для всех источников:

default ambient - (0, 0, 0, 1); фоновый по умолчанию, (dimmest possible = black); наименьшая яркость - черный.

Для источника света LIGHTO:

* default diffuse = (1, 1, 1, 1) диффузный по умолчанию, (brightest possible - white) наибольшая яркость - белый


⇐ Предыдущая| |Следующая ⇒