本文主要是介绍OpenGL雾(fog),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用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:对每一顶点进行雾的渲染,它速度较快,但是不够美丽
- GL_EXP:简单渲染在屏幕上显示的雾的模式。它无法给予我们非常漂亮的雾的效果,但是却可以在古老的电脑上工作的很好。
- GL_EXP2:比1提高了一点,将渲染全屏幕的雾,然而她会给予场景更深的效果。
- GL_LINEAR:这是最好的雾的渲染模式,对象在雾中消隐的很好
GL_FOG_END的设置会影响你的glTranslatef的Z坐标,如果GL_FOG_END的值设置为5, 而glTranslatef的值设置为6,比5大,我曾经碰到过,纹理如何也不能显示,避免出现问题,最好GL_FOG_END的值要大于glTranslatef的Z值
这篇关于OpenGL雾(fog)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!