• GL_FOG_MODE - определяет уравнение, используемое при вычислении тумана. Параметр может принимать следующие три значения: GL_LINEAR,GL_EXP,GL_EXP2;
• GL_FOG_DENSITY - определяет плотность тумана, принимающее неотрицательное значение. Значение по умолчанию 1.0;
• GL_FOG_START - определяет ближнюю дистанцию от экрана начала тумана. Значение по умолчанию 0.0;
• GL_FOG_END - определяет дальнюю дистанцию от экрана конца тумана. Значение по умолчанию 1.0;
• GL_FOG_INDEX - определяет индекс цвета тумана. По умолчанию равно 0;
• GL_FOG_COLOR - функции glFogfv и gIFogiv принимают это значение, чтобы установить цвет тумана. По умолчанию цвет (0,0,0,0);
• GL_FOG_COORDINATE_SOURCE - определяет, использовать ли при наложении тумана глубину фрагмента или указанные координаты тумана. Параметр может принимать значение GL FRAGMENT DEPTH или GL FOG COORDINATE.
С помощью функций glEnable и gIDisable с аргументом GL_FOG можно включить и отключить обработку тумана. Туман затрагивает отображаемую геометрию, битовые изображения и блоки пикселей. Туман вычисляется путем смешивания цвета тумана с каждым отображаемым цветом пикселя (после наложения текстуры) с использованием коэффициента f. Формула вычисления f зависит от типа тумана. Для GLJ-INEAR тумана формула имеет следующий вид:
f=(end-z)/(end-start), для GL_EXP тумана:
f_g(-density*z)
для GL_EXP2 тумана:
f=e(-densi1y*z?
Независимо от режима тумана, f сжимается к диапазону [0,1] после вычисления. Если используется RGBA режим, цвет компоненты вычисляется по следующей формуле:
Cnr=f*Cr+(1-f)*Cf.
В индексном режиме ir вычисляется по следующей формуле:
ln=l+(1-f)*ir
Информацию, связанную с этой функцией, можно получить вызовом следующих функций:
gIGet с аргументом GL_FOG_COLOR; gIGet с аргументом GL_FOG_INDEX; gIGet с аргументом GL_FOG_DENSITY; gIGet с аргументом GL_FOG_START; gIGet с аргументом GL_FOG_END; gIGet с аргументом GL_FOG_MODE; gllsEnabled с аргументом GL_FOG.
Смотри также: gIFogCoord.
gIFogCoord
Устанавливает текущую координату тумана для вершины.
void glFogCoordf
(
GLfloat z; // координата тумана ) ; Варианты: FogCoord{fd}, FogCoord{fd}v.
Смотри также: gIFog.
gIFogCoordPointer
Определяет массив координат тумана.
void gIFogCoordPointer (
GLenum type, // тип координат
GLsizei stride, // смещение
const GLvoid *pointer // указатель на массив
) ; Подробнее о параметрах, type
Тип координат в массиве pointer. Может принимать одно из следующих значений: GL_FLOAT или GL_DOUBLE. stride
Смещение в байтах между соседними координатами.
Дпя испопьзования массива нужно вызвать функцию
glEnableClientState с аргументом GL_FOG_COORDINATE_ARRAY. Когда массив опредепяется, то данные о массиве сохраняются на клиентской стороне, и поэтому эти значения непьзя сохранить и восстановить функциями gIPushAttrib и gIPopAttrib. Резупьтат вызова функции внутри пары glBegin/glEnd не опредепен.