2011-08-23 64 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