2011-08-23 67 views
1

构建了一个非常简单的OpenGL程序,该程序由一个中心纹理立方体组成,顶点/正常值分别为+/- 1.0,我有两个关于固定管道照明模型行为的问题。OpenGL环境光

1)当我将全局环境光设置为{1.0,1.0,1.0,1.0}时,为什么我的对象没有被完全照亮。我希望这些设置能够渲染模型,就好像照明已经被禁用一样(即所有表面都以最大亮度渲染)。当我将漫射光直接放置在模型的前面{0.0,0.0,2.0}时,所有东西看起来都能正确渲染,但如果我将光线进一步移回{0.0,0.0,200.0},模型渲染就像照明已被禁用(即所有表面都以全强度渲染)。

回答

3

由于您没有发布您的实际设置代码,我所能做的只是猜测。

1:环境光强度用环境表面颜色调制。如果你没有正确设置你的材料,那么这个值将会是而不是与漫反射表面颜色相同。当然,既然你没有发布代码,我不能说你是否正确地做了。

2:我需要看看发生了什么,但这可能是由于没有任何强度衰减造成的。实际上,随着光线越来越远,出现明亮,因为the normals are more likely to be closer to facing it than if it is close to the surface。点光线在移开时变成定向光线。所以你需要使用衰减。

+0

感谢您的回答尼科尔。关于环境光强度,你能否给我一个光/材料值的例子,它可以使立方体像光被禁用一样;会{1.0,1.0,1.0,1.0}这两个伎俩?物质值{0.0,0.0,0.0,1.0}是否会使立方体呈黑色,而与环境光线值无关? – Taliadon

+0

有_many_“物质价值”;你指的是哪一个? –

+0

例如,我没有定义光源,并且通过glLightModel命令将全局环境光设置为{1.0,1.0,1.0,1.0}。周围的材料价值{1.0,1.0,1.0,1.0}是否有诀窍? – Taliadon