这就是我在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);

每个对象的范围都在0.1-100之间,但是雾并没有出现,发生了什么?

最佳答案

问题是GL_EXP2模式。

如果您在GL_EXP2模式下检查雾混合因子的公式,请执行以下操作:

f = e ^((-密度* z)^ 2)(限制为[0..1])

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

无论如何,要测试雾气,最好先从GL_LINEAR模式开始。它更容易可视化。

09-06 13:23