Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка комR_А5.doc
Скачиваний:
13
Добавлен:
09.11.2019
Размер:
419.84 Кб
Скачать

Джерела світла

Додати в сцену джерело світла можна за допомогою команд

void glLight[i f] (GLenum light, GLenum pname, GLfloat param)

void glLight[i f] (GLenum light, GLenum pname, GLfloat *params)

Параметр light однозначно визначає джерело і вибирається з набору спеціальних символічних імен виду GL_LIGHTi, де i повинно лежати в діапазоні від 0 до GL_MAX_LIGHT, яке не перевищує восьми.

Два параметри, що залишилися, мають аналогічний зміст, що і в команді glMaterial..(). Розглянемо їх призначення (спочатку описуються параметри для першої команди, потім для другої):

GL_SPOT_EXPONENT параметр param повинен містити ціле або дійсне число від 0 до 128, що задає розподіл інтенсивності світла. Цей параметр описує рівень сфокусованого джерела світла. Значення за умовчанням: 0 (розсіяне світло).

GL_SPOT_CUTOFF параметр param повинен містити ціле або дійсне число між 0 і 90 або рівне 180, яке визначає максимальний кут розкиду світла. Значення цього параметра є половина кута у вершині конусовидного світлового потоку, що створюється джерелом. Значення за умовчанням: 180 (розсіяне світло).

GL_AMBIENT параметр params повинен містити чотири цілих або дійсних значень кольорів RGBA, які визначають колір фонового освітлення. Значення за умовчанням: (0.0, 0.0, 0.0, 1.0).

GL_DIFFUSE параметр params повинен містити чотири цілих або дійсних значень кольорів RGBA, які визначають колір дифузного освітлення. Значення за умовчанням: (1.0, 1.0, 1.0, 1.0) для LIGHT0 і (0.0, 0.0, 0.0, 1.0) для інших.

GL_SPECULAR параметр params повинен містити чотири цілих або дійсних значень кольорів RGBA, які визначають колір дзеркального віддзеркалення. Значення за умовчанням: (1.0, 1.0, 1.0, 1.0) для LIGHT0 і (0.0, 0.0, 0.0, 1.0) для інших.

GL_POSITION параметр params повинен містити чотири цілих або дійсних значень, які визначають положення джерела світла. Якщо значення компоненти w дорівнює 0.0, то джерело вважається нескінченно видаленим і при розрахунку освітленості враховується тільки напрям на точку (x, y, z), інакше вважається, що джерело розташоване в точці (x, y, z, w). Значення за умовчанням: (0.0, 0.0, 1.0, 0.0).

GL_SPOT_DIRECTION параметр params повинен містити чотири цілих або дійсних чисел, які визначають напрям світла. Значення за умовчанням: (0.0, 0.0, -1.0, 1.0).

При зміні положення джерела світла слід враховувати наступні факти: якщо положення задається командою glLight.() перед визначенням орієнтації погляду (командою glLookAt()), то вважатиметься, що джерело знаходиться в точці спостереження. Якщо положення встановлюється між завданням орієнтації і перетвореннями видової матриці, то воно фіксується і не залежить від видових перетворень. У останньому випадку, коли положення задане після орієнтації і видової матриці, його положення можна міняти, встановлюючи як нову орієнтацію спостерігача, так і міняючи видову матрицю.

Для використання освітлення спочатку потрібно встановити відповідний режим викликом команди glEnable (GL_LIGHTNING), а потім включити потрібне джерело командою glEnable (GL_LIGHTn).