≪
≫

Моделирование тумана

Для придания большей реалистичности в визуализации ЗЭ-сцен в OpenGL часто используют эффект тумана. Туман в OpenGL реализуется путем изменения цвета объектов в сцене в зависимости от расстояния до точки наблюдения.

Способ вычисления интенсивности тумана можно определить с по-

мощью команд

void glFog[if]( GLenum рпате, GLtype param)

void glFog[if]v( GLenum рпате, const GLtype *params)

Аргумент рпате может принимать следующие часто используемые значения:

Параметр

Описание

GL_FOG_MODE

• Определяет формулу, по которой будет вычисляться интенсивность тумана в точке. Аргумент param может принимать значения:

GL_EXP - для вычисления интенсивности по формуле /= exp(-dz);

GL_EXP2 - для вычисления интенсивности по формуле f= exp((-dz)2);

GL_LINEAR - для вычисления интенсивности по формуле f= е - z/e - s, где z - расстояние от вершины, в которой вычисляется интенсивность тумана, до точки наблюдения.

Коэффициенты d, s, е задаются с помощью следующих значений аргумента рпате:

GL_FOG_DENSITY, GL_FOG_START и

GL_FOG_END соответственно

GL_FOG_DENSITY

• Плотность тумана (d) для GL_EXP и GL_EXP2. Параметр param определяет значение d. По умолчанию установлено значение (1.0)

GL_FOG_START

• Начальное расстояние (s) от точки наблюдения, после которого начинает изменяться интенсивность тумана. Параметр param определяет значение s. По умолчанию установлено значение (0.0)

Продолжение табл.

Параметр

Описание

GL_FOG_END

• Конечное расстояние (е) от точки наблюдения, до которого изменяется интенсивность тумана. Параметр param определяет значение е. По умолчанию установлено значение (1.0)

GL_FOG_COLOR

• Определяется цвет тумана. В этом случае params - указатель на массив из 4-х компонент цвета (RGBA). По умолчанию установлено значение (0.0, 0.0, 0.0, 0.0)

Рассмотрим пример использования тумана:

GLfloat FogColor[4]={0.6, 0.6, 0.6, 1.0}; // Цвет тумана

glEnable(GL_FOG); // Включаем туман glFogi(GL_FOG_MODE,GL_LINEAR); // Линейное изменение интенсивности

glFogf(GL_FOG_START,2.0); И Начало тумана glFogf(GL_FOG_END,50.0); // Окончание тумана glFogfv(GL_FOG_COLOR,FogColor); // Устанавливаем цвет тумана

 
Посмотреть оригинал