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 范围内,但雾只是没有出现,发生了什么?

4

1 回答 1

5

问题是 GL_EXP2 模式。

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

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

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

无论如何,为了测试雾,最好先从 GL_LINEAR 模式开始。只是更容易可视化。

于 2011-08-30T13:20:14.040 回答