雾效开启后离视点较远的物体将融入到雾的颜色中。通过使用雾可以提高性能,因为我们无需绘制那些由于雾的影响而看不见的物体。
OpenGL中开启雾很容易,它只是一条语句:
glEnable(GL_FOG);//开启雾效果
然而开启雾效后得到的默认的效果可能不是我们想要的,我们可以通过调用
void glFog*( GLenum pname, GLfloat param );来设置雾效达到我们预期的效果。
当pname为 GL_FOG_MODE的时候可以设置雾的过滤模式,param可以是GL_EXP, GL_EXP2, GL_LINEAR。它分别代表了不同雾效的混合因子f如下图:
当渲染的时候,使用雾效混合因子将雾的颜色和片元的颜色混合起来,得到雾的效果。
当pname为GL_FOG_COLOR的时候可以设置雾的颜色。
当pname为GL_FOG_DENSITY的时候可以设置雾的浓度。