这就是我在 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 ^ ((-density * z) ^2)(限制在 [0..1])
雾化曲线专门使用密度参数进行调整。如果您的范围是 0.1-100,我建议密度约为 0.001。
无论如何,测试雾最好先从 GL_LINEAR 模式开始。它只是更容易可视化。
关于c++ - 为什么 OpenGL 雾只是不出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242225/