Моделирование тумана
Для придания большей реалистичности в визуализации ЗЭ-сцен в 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); // Устанавливаем цвет тумана