# OpenGL超級寶典筆記——霧

### 應用霧

``````glClearColor(fLowLight[0], fLowLight[1], fLowLight[2], fLowLight[3]);
glEnable(GL_FOG);
glFogfv(GL_FOG_COLOR, fLowLight);
glFogf(GL_FOG_START, 5.0f);
glFogf(GL_FOG_END, 30.0f);
glFogi(GL_FOG_MODE, GL_LINEAR);``````

glEnable(GL_FOG);  glDisable(GL_FOG);

void glFogi(GLenum pname, GLint param);

void glFogf(GLenum pname, GLfloat param);

void glFogfv(GLenum pname, GLfloat *params);

void glFogiv(GLenum pname, GLint *params);

glFogfv(GL_FOG_COLOR, fLowLight); //設定霧的顏色與背景色相同

glFogf(GL_FOG_START, 5.0f);

glFogf(GL_FOG_END, 30.0f);

#### glFogi(GL_FOG_MODE, GL_LINEAR); //使用哪一種霧化方程

 霧化模式 霧化方程 GL_LINEAR f = (end – c) / (end – start) GL_EXP f = exp(-d * c) GL_EXP2 f = exp(-(d * c)2)

glFogf(GL_FOG_DENSITY, 0.5f);

GL_FOG_START和GL_FOG_END隻影響GL_LINEAR的霧化效果。GL_LINEAR（線性模式）是線性的直線，GL_EXP和GL_EXP2（指數模式）是兩條特徵曲線。如下圖霧化濃度值為0.5的近似圖：

glHint(GL_FOG_HINT, GL_NICEST);

glHint(GL_FOG_HINT, GL_FASTEST);

#### 霧座標

void glFogCoordf(GLfoat fFogDistance);

glFogi(GL_FOG_COORD_SRC, GL_FOG_COORD);

glFogi(GL_FOG_COORD_SRC, GL_FRAGMENT_DEPTH);

``````  glEnable(GL_FOG);
glFogfv(GL_FOG_COLOR, fLowLight);
glFogf(GL_FOG_START, 0.5f);
glFogf(GL_FOG_END, 30.0f);
glFogi(GL_FOG_MODE, GL_LINEAR);
glHint(GL_FOG_HINT, GL_NICEST); //開啟最佳霧化效果``````

var element = document.createElement(“script”);
element.async = true;
document.body.appendChild(element);
}
} else if (window.attachEvent) {
} else {
}

• 2018.06.19

• 2018.06.19

• 2018.06.19