OGL浅学_雾效果

所谓雾效果,就是使远处的物体看上去逐渐变得模糊。雾在本质上是一种视觉模拟应用,用于模拟有线可视性的场合。

当雾启用后,远离观察点的物体开始融入到雾颜色中。可以控制雾的浓度,它决定了物体随着距离的增加而融入到雾颜色的速度,另外还可以设置雾的颜色。下面先看一张雾的效果图:


在大型的模拟程序中,雾可以提高性能,因为它可以选择不绘制那些因为雾的影响而不可见的物体。下面我们来看一下雾的使用:

glEnable(GL_FOG);

{

    GLfloat fogColor[4] = {0.5, 0.5, 0.5, 1.0};

    fogMode = GL_EXP;

    glFogi (GL_FOG_MODE, fogMode);

    glFogfv (GL_FOG_COLOR, fogColor);

    glFogf (GL_FOG_DENSITY, 0.35);

    glHint (GL_FOG_HINT, GL_DONT_CARE);

    glFogf (GL_FOG_START, 1.0);

    glFogf (GL_FOG_END, 5.0);

}

首先是启用雾效果,然后用glFog*()来控制雾浓度的方程式:

1、设置雾的模式GL_FOG_MODE,有GL_LinerGL_EXPGL_EXP2...雾的模式决定了雾混合因子。

2、设置雾的颜色GL_FOG_COLOR

3、设置雾的密度GL_FOG_DENSITY

4GL_FOG_HINT确定了雾的渲染方式,使用GL_DONT_CARE是因为并不关心建议值。GL_NICEST对每一像素进行雾的渲染,它看起来是极棒的。GL_FASTEST每一顶点进行雾的渲染,它速度较快,但是不够美丽

5、设置雾的范围,即摄像机的位置与片段中心的视觉坐标距离小于GL_FOG_START,即可见,大于GL_FOG_END则不可见,在两者范围之间则受雾浓度方程式的影响

当你看完上述五个条件后,也许你还对雾的设置不是太明白,但是不用担心,当你了解了雾浓度方程式后,你就明白了上述几项都是该方程式的参数。下面来介绍雾的浓度方程式。

RGBA模式下的,雾最终颜色方程式为:

其中表示源片段的颜色索引,表示用GL_FOG_COLOR分配的雾颜色值,f则为雾混合因子:


根据GL_FOG_MODE设置的模式,选择对应的混合因子套入,即可得到片段在雾效果下的颜色。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值