为什么OpenGL中的雾效果没有出现?

4

这是我在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的范围内,但是雾却没有出现,发生了什么事?


如果没有雾,会出现什么?你正在渲染什么样的场景?也许0.5的雾密度不够强。 - Nicol Bolas
1
你的雾完全是黑色的。我猜你场景的背景也是黑色的。 - wormsparty
3
@wormsparty说:“不,雾的颜色是白色({1,1,1,1}代表的是白色而非黑色)。” - Constantinius
1个回答

5
问题出在GL_EXP2模式。
如果您检查GL_EXP2模式下雾混合因子的公式:
f = e ^ ((-density * z) ^2)(限制在[0..1])
雾曲线仅通过密度参数进行调整。 如果您的范围是0.1-100,我建议使用约0.001的密度。
无论如何,为了测试雾效果,最好先从GL_LINEAR模式开始。 这样更容易可视化。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接