为什么 OpenGL 雾就是不出现?

Why OpenGL fog just doesn't appear?

本文关键字:OpenGL 为什么      更新时间:2023-10-16

这是我如何在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模式开始。这样更直观。