为什么OpenGL雾不会出现?

jon*_*ham 4 c++ opengl graphics visual-c++ fog

这就是我在OpenGL中启用雾的方法:

float fog_colour[4] = {1,1,1,1};
glEnable(GL_FOG);
glFogf(GL_FOG_MODE,GL_EXP2);
glFogfv(GL_FOG_COLOR,fog_colour);
glFogf(GL_FOG_DENSITY,0.5);
glHint(GL_FOG_HINT,GL_NICEST);
glFogf(GL_FOG_START,0.1);
glFogf(GL_FOG_END,100);
Run Code Online (Sandbox Code Playgroud)

每个物体的范围都在0.1-100之间,但是雾不会出现,发生了什么?

rod*_*igo 5

问题是GL_EXP2模式.

如果在GL_EXP2模式下检查雾混合因子的公式:

f = e ^((-density*z)^ 2)(钳位到[0..1])

雾曲线仅使用密度参数进行调整.如果您的范围是0.1-100,我建议密度约为0.001.

无论如何,对于测试雾最好先用GL_LINEAR模式开始.它更容易可视化.