2011-08-30 95 views
4

这是我如何使雾在OpenGL:为什么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

如果没有出现雾,什么?你渲染什么样的场景?也许雾密度0.5不够强。 –

+1

你的雾是完全黑色的。我的猜测是你的场景背景也是黑色的。 – wormsparty

+3

@ wormsparty:不,雾色是白色的('{1,1,1,1}'是白色的而不是黑色的)。 – Constantinius

回答

5

问题是GL_EXP2模式。

如果检查公式用于GL_EXP2模式雾混合因子:

F = E 1(( - 密度* Z)^ 2)(夹紧到[0..1])

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

无论如何,对于测试雾更好地首先以GL_LINEAR模式开始。可视化更容易。

相关问题