^Back To Top
foto1 foto2 foto3 foto4 foto5 foto6 foto7 foto8 foto9 foto10 foto11 foto12 foto13 foto14 foto15 foto16 foto17 foto18 foto19 foto20 foto19

 

OpenGL в C++ для Ch--

 

 

Шар при различных моделях освещения

 

..... Чтобы раскрасить шар, в зелёную зону функции Light() надо вставить команды соответствующей модели освещения. В OpenGL такие модели реализуются двумя операторами:

..... Объявляем переменную col[ ] (сокращённо от слова color - цвет) статуса float в виде массива. Первые три параметра - кодировка цвета (числа от 0 до 1). При w = 1.0 объект освещается параллельными лучами света.

..... В оператор glLight входит два параметра и одна переменная. Первый параметр LIGHT0 - это название источника света. Второй - декларирует тип модели, а переменная col задает цвет. Буква f в конце названия относится к статусу переменной - float, а v указывает, что она - массив (вектор). Приставками  Gl,  Gl_ и gl  отмечена принадлежность операторов к OpenGl.

..... О связи моделей освещения объектов с реальностью судите сами.

 

Фоновая модель источника света AMBIENT

..... Для фоновой модель освещения эти операторы выглядят так:

..... В переменную col заложена информация об освещении шара параллельными лучами красного света.

..... Помещаем эти строчки в зелёную зону функции Light() нажимаем F5 и на экране появляется белый шар, освещенный красным фоновым светом (левый рисунок).

 

 

Диффузная модель источника света DIFFUSE

..... Для диффузной модели освещения операторы таковы:

..... В данном случае переменная col также содержит информацию об освещении шара параллельными лучами красного света. Заносим эти строчки в пустую зелёную зону функции Light() нажимаем F5, и на экране появляется белый шар, освещенный красным диффузным светом (средний рисунок).

 

Модель зеркального шара SPECULAR

..... Разработчики OpenGL предложили несколько моделей отражения света. Ниже приведены два оператора для модели зеркального шара:

..... В первом операторе объявляется массив col для шара красного цвета. Второй оператор glMaterialfv() декларирует отражение света. Параметр FRONT указывает на переднюю сторону объекта. В остальном структура строк прежняя.

..... Помещаем эти два оператора в пустую зелёную зону функции Light() нажимаем F5 и получаем красный зеркальный шар, освещенный белым светом (правый рисунок).