glFog - вказує параметри димки.
C специфікація
void glFogf (GLenum pname,
GLfloat param) ;
void glFogi (GLenum pname,
GLint param) ;
void glFogfv (GLenum pname,
const GLfloat * params) ;
void glFogiv (GLenum pname,
const GLint * params) ;
Параметри
pname - вказує однозначний параметр димки. Приймаються наступні значення: GL_FOG_MODE, GL_FOG_DENSITY, GL_FOG_START, GL_FOG_END, GL_FOG_INDEX і GL_FOG_COORD_SRC.
param - вказує значення, яке буде встановлено для параметра pname.
params - вказує значення або значення які будуть встановленими для опції, яка вказана через параметр pname. GL_FOG_COLOR вимагає масив з чотирма значеннями. Усі параметри приймаються масив, який містить тільки одне значення.
Опис
За умовчанням димка являється вимкненою. Коли увімкнена, димка впливає на растеризовану геометрію, карти бітів і піксельні блоки, але не на операції очищення буферу. Для увімкнення чи вимкнення димки, використовуйте glEnable i glDisable з аргументом GL_FOG.
Команда glFog присвоює значення або значення у параметра params для опцій димки вказаної через pname. Наступні значення приймаються для pname:
- GL_FOG_MODE - параметр params являється одним цілим або дійсним числом, яке вказує рівняння, яке повинно бути використаним для обчислення коефіцієнт змішування димки, f. Приймаються три символічні константи: GL_LINEAR, GL_EXP і GL_EXP2. Обчислення відповідають до цих символічних констант визначені нижче. Значення за умовчанням для цього параметру являється GL_EXP.
- GL_FOG_DENSITY - параметр params містить одне ціле або дійсне число, яке вказує густину. Густина димки використовується у обох експоненціальних обчисленнях. Приймаються тільки позитивні значення. Значення за умовчанням 1.
- GL_FOG_START - параметр params являється одним цілим або дійсним значенням, яке визначає початок - найближчу позицію, яка використовується у лінійному обчисленні димки. Значення за умовчанням 1.
- GL_FOG_INDEX - параметр params являється одним цілим або дійсним числом, яке визначає if - індекс кольору димки. Значення за умовчанням 0.
- GL_FOG_COLOR - параметр params містить чотири цілих або дійсних значень, які визначають Cf - колір димки. Цілі значення лінійно перетворюються так, що найбільше позитивне значення відповідає 1.0, і найбільш негативне значення перетворююється на -1.0. Дійсні значення беруться безпосередньо. Після перетворення, усі компоненти кольору обрізаються до проміжку [0, 1]. Значення кольору димки за умовчанням являється (0, 0, 0, 0).
- GL_FOG_COORD_SRC - параметр params містить одне з наступних символічних констант: GL_FOG_COORD або GL_FRAGMENT_DEPTH. GL_FOG_COORD вказує, що поточна координата димки повинна використовуватися у якості значення відстані у обчисленні кольору димки. GL_FRAGMENT_DEPTH вказує, що поточна глибина фрагменту повинна використовуватися у якості значення відстані у обчисленні димки.
Димка змішує колір димки з кожним рестеризованим пост-текстурним фрагментом пікселя, використовуючи коефіцієнт змішування f. Коефіцієнт f обчислюється у один з трьох шляхів, в залежності від режиму димки. Нехай c буде або відстанню у координатах від оригіналу (у випадку коли GL_FOG_COORD_SRC являється GL_FRAGMENT_DEPTH) або поточна координата димки (у випадку GL_FOG_COORD_SRC являється GL_FOG_COORD). Обчислення для GL_LINEAR являється
f = end - c end - strart
Обчислення для GL_EXP димки являється
f = e - density * c
Рівняння для GL_EXP2 димки являється
f = e - density * c 2
Не зважаючи на режим димки, f обрізається у проміжок [0, 1] після її обчислення. Тоді, якщо OpenGL міститься у режимі RGBA, компоненти кольору фрагменту червоний, зелений і синій, представлені за допомогою Cr, замінюються на
Cr`` = f * Cr + 1 - f *Сf
Димка не впливає на компонент прозорості фрагмента.
У індекс-колірному режимі, індекс кольору фрагмента ir замінюється на
ir`` = ir + 1 - f * if
Нотатки
GL_FOG_COORD_SRC доступний тільки якщо версія OpenGL є 1.4 або вище.
Помилки
GL_INVALID_ENUM генерується якщо параметр pname не містить допустимого значення, або якщо pname містить GL_FOG_MODE і параметр params не містить допустимого значення.
GL_INVALID_VALUE генерується якщо параметр pname являється GL_FOG_DENSITY і параметр params містить негативне значення.
GL_INVALID_OPERATION генерується якщо glFog викликається між викликами glBegin і відповідного glEnd.
Пов'язані параметри
glIsEnabled з аргументом GL_FOG
glGet з аргументом GL_FOG_COLOR
glGet з аргументом GL_FOG_INDEX
glGet з аргументом GL_FOG_DENSITY
glGet з аргументом GL_FOG_START
glGet з аргументом GL_FOG_END
glGet з аргументом GL_FOG_MODE
Перегляньте також
glEnable, glFogCoord
Оригінал: https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glFog.xml