OpenGL学习笔记:雾(fog)

原文链接:

http://blog.csdn.net/lcphoenix/article/details/6646721


使用fog步骤:

1. enable. glEnable(GL_FOG); // 使用雾气

2. 设置雾气颜色。glFogfv(GL_FOG_COLOR, fogColor);

3. 设置雾气的模式. glFogi(GL_FOG_MODE, GL_EXP); // 还可以选择GL_EXP2或GL_LINEAR

4. 设置雾的密度. glFogf(GL_FOG_DENSITY, 0.35f); // GL_EXP/GL_EXP2 时有意义, GL_LINEAR时无意义

5. 设置雾气的开始位置。 glFogf(GL_FOG_START, 1.0f); //GL_LINEAR时有意义, GL_EXP/GL_EXP2 时有意义

6. 设置 雾气的结束位置。 glFogf(GL_FOG_END, 5.0f); //GL_LINEAR时有意义, GL_EXP/GL_EXP2 时有意义

7. glHint(GL_FOG_HINT, GL_DONT_CARE); // 设置系统如何计算雾气



 glHint(GL_FOG_HINT, GL_DONT_CARE)确定了雾的渲染方式,使用GL_DONT_CARE是因为并不关心建议值。然而这里有一个用来解释关于这个项的不同值之间的区别:  

  • GK_DONT_CARE:让OPENGL自己来确定雾的渲染方式,每顶点或是每像素。
  • GL_NICEST:对每一像素进行雾的渲染,它看起来是极棒的。
  • GL_FASTEST:对每一顶点进行雾的渲染,它速度较快,但是不够美丽
glFogi设置模式:
  • GL_EXP:简单渲染在屏幕上显示的雾的模式。它无法给予我们非常漂亮的雾的效果,但是却可以在古老的电脑上工作的很好。
  • GL_EXP2:比1提高了一点,将渲染全屏幕的雾,然而她会给予场景更深的效果。
  • GL_LINEAR:这是最好的雾的渲染模式,对象在雾中消隐的很好
 glFogf(GL_FOG_START, 1.0f)确定了雾的开始初离屏幕有多近。你可以将这个值改变为任意你想要的值,这个值描述了那个你想要使雾开始的位置。下一行与上行相似:glFogf(GL_FOG_END, 5.0),它告诉OpenGL雾能离开屏幕有多远

注意:
GL_FOG_END的设置会影响你的glTranslatef的Z坐标,如果GL_FOG_END的值设置为5, 而glTranslatef的值设置为6,比5大,我曾经碰到过,纹理如何也不能显示,避免出现问题,最好GL_FOG_END的值要大于glTranslatef的Z值

你可能感兴趣的:(计算机图形学)