glLightModel - встановлює параметри моделі освітлення.

C-специфікація

void glLightModelf (GLenum pname,
                    GLfloat param);
 
void glLightModeli (GLenum pname,
                    GLint param) ;


void glLightModelfv (GLenum pname,
                     const GLfloat * params) ;
 
void glLightModeliv (GLenum pname,
                     const GLint * params) ;

 

Параметри

pname вказує однозначний параметр моделі освітлення. Приймаються наступні значення: GL_LIGHT_MODEL_AMBIENT, GL_LIGHT_MODEL_LOCAL_VIEWER, GL_LIGHT_MODEL_COLOR_CONTROL і GL_LIGHT_MODEL_TWO_SIDE.

param вказує значення, в яке param буде встановлено.

params параметр передає вказівник на одне або множину значень, в які параметр params буде встановлено.

Опис

Функція glLightModel встановлює параметр моделі освітлення. Параметр pname іменує параметр, а параметр params надає нове значення. Існує три параметри моделі освітлення:

  • GL_LIGHT_MODEL_AMBIENT. Параметр params містить чотири цілі або дійсні числа, що вказуєть інтенсивність RGBA -освітлення навколишнього середовища усієї сцени. Цілі значення перетворюються у спосіб при якому найбільше позитивне значення перетворюється на 1.0, і найбільш негативне значення перетворюється на -1.0. Значення дійсних значень надаються без перетворень. Обидва типи даних не обрізаються. За замовчуванням інтенсивність освітлення навколишнього середовища містить значення (0.2, 0.2, 0.2, 1.0)
  • GL_LIGHT_MODEL_COLOR_CONTROL. Параметр params повинен містити значення GL_SEPARATE_SPECULAR_COLOR, або GL_SINGLE_COLOR. Значення GL_SINGLE_COLOR вкзаує, що єдиний колір генерується з обчислення освітлення для вертекса. GL_SEPARATE_SPECULAR_COLOR вказує, що обчислення кольору відзеркалення освітлення буде збережено окремо від остального обчислення освітлення. Колір відзеркалення сумується у згенерований фрагментний колір після застосування накладання текстур (якщо увімкнено). Значення за умовчанням являється GL_SINGLE_COLOR.
  • GL_LIGHT_MODEL_LOCAL_VIEWER. Параметр params являється одним цілим або дійсним числом, яке вказує як обчислюються кути відзеркалення. Якщо params містить значення 0 (або 0.0), кути відзеркалення обирають напрямок огляду у якості паралельних і у напрямку осі -z, незалежно від розміщення вертекса у координатах огляду. В іншому випадку, відзеркалення обчислюються від початкової точки в координатах огляду. Значення за умовчанням є 0.
  • GL_LIGHT_MODEL_TWO_SIDE. Параметр params являється одним цілим або дійсним числом, яке вказує чи виконуються одно- або двосторонні обчислення для багатокутників. Він не надає ефекту на обчислення освітлення для точок, ліній або бітових карт. Якщо параметр params являється 0 (або 0.0), вказується одностороннє освітлення, і тільки передні параметри матеріалу використовуються у обчисленні освітлення. В іншому випадку, вказується двостороннє обчислення освітлення. У даному випадку, вертекси задньої сторони багатокутників освітлюються використовуючи задні параметри матеріалу і їхні нормалі розвертаються перед обчисленням. Вертекси передньої сторони багатокутника завжди освітлюються використовуючи передні параметри матеріалу, без змін до їхніх нормалей. Значення за умовчанням 0.

У режимі RGBA, освітлений колір вертекса являється сумою інтенсивності випромінювання матеріалу, добутком відображення матеріалу освітлення навколишнього середовища і моделі освітлення інтенсивності освітлення навколишнього середовище, і комбінації кожного увімкненого джерела світла. Кожне джерело світла надає суму трьох компонентів: освітлення навколишнього середовища, розсіяння, і відзеркалення. Компонент освітлення навколишнього середовища джерела світла являється добутком відзеркалення освітлення навколишнього середовища матеріалу і інтенсивності освітлення навколишнього середовища джерела. Компонент розсіювання джерела освітлення являється добутком відзеркалення розсіювання матеріалу, інтенсивності розсіювання джерела і добуток нормалей вертекса з нормалізованим вектором від вретекса до джерела освітлення. Компонент відзеркалювання джерела освітлення являється добутком відзеркалення матеріалу, інтенсивність відзеркалювання джерела освітлення і добуток нормалізованих векторів вертекс-до-ока і вертекс-до-джерела, піднятий до степеня випромінювання матеріалу. Усі ці внески освітлення від джерела світла ослаблюються в залежності від відстані від вертекса до джерела світла і від напрямку освітлення, експоненти розсіювання і кута освітлення. Усі добутки замінюються на 0, якщо їхнє обчислення дало негативний результат.

Компонент прозорості результуючого кольору освітлення встановлюється в значення компоненту прозорості компоненту відзеркалення розсіювання матеріалу.

У колір-індексному режимі, значення індексів освітлення вертекса міститься у проміку від значення випромінювання навколишнього середовища до значення відзеркалення переданих до glMaterial, використовуючи GL_COLOR_INDEX. Коефецієнти розсіювання і відзеркалення, обчислюються за допомогою ваг (0.30; 0.59; 0.11) для кольору джерела світла, випромінювання матеріалу, і одинакові рівняння відзеркаленні і ослаблення як у випадку RGBA, визначають на скільки більший результуючий індекс являється більшим за освітлення навколишнього середовища.

Нотатки

Константа GL_LIGHT_MODEL_COLOR_CONTROL доступна у системі OpenGL версії 1.2 або вище.

Помилки

GL_INVALID_ENUM генерується якщо параметр pname не містить доступного значення.

GL_INVALID_ENUM генерується якщо pname містить значення GL_LIGHT_MODEL_COLOR_CONTROL і params не являється одним з GL_SINGLE_COLOR або GL_SEPARATE_SPECULAR_COLOR.

GL_INVALID_OPERATION генерується якщо glLightModel виконується між відповідними викликами glBegin і glEnd.

Пов'язані параметри

glGet з аргументом GL_LIGHT_MODEL_AMBIENT.

glGet з аргументом GL_LIGHT_MODEL_COLOR_CONTROL.

glGet з аргументом GL_LIGHT_MODEL_LOCAL_VIEWER.

glGet з аргументом GL_LIGHT_MODEL_TOW_SIDE.

glIsEnabled з аргуметом GL_LIGHTING.

Перегляньте також

glLight, glMaterial

Оригінал

https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glLightModel.xml