2010-11-07 104 views
1

我有我所有的OpenGL照明正常工作,與法線,材料等...OpenGL光照問題

我的問題是其中的OpenGL渲染的面孔時,光是面對落後的方式。如果光照在臉後,它應該呈現一張黑色的臉,但它會渲染臉的背面看起來像。我該如何阻止這種奇怪的行爲。我發現很難描述正在發生的事情,但希望你知道如何解決這個問題。

在此先感謝。

編輯:好吧,說我有一個平方形多邊形來反轉牆。無論哪側我都有燈,即使只有一面應該點亮,另一面應該是黑色(或者因爲其他/環境光線而非常暗),它們都會點亮。看到問題了嗎?它像紙一樣,因爲光線正在通過並出現在臉部的錯誤一側。

+0

你的頂點是否有法線? – CiscoIPPhone 2010-11-07 02:53:56

+0

是的,法線沒有問題。 – 2010-11-07 02:58:46

+0

您尚未將GL_LIGHT_MODEL_AMBIENT設置爲明亮嗎? – epatel 2010-11-07 21:13:18

回答

2

您看到的問題是因爲多邊形的兩側在其照明計算中使用相同的法線。

的解決方案是設置:

float modelTwoside[] = {GL_TRUE}; 
glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, modelTwoside); 

這導致OpenGL渲染背面側之前扭轉法線。 OpenGL也將使用背面材質。

+0

這並不能解決問題。 – 2010-11-07 03:58:49

+0

然後我不知道問題是什麼,也許你可以做一個最小的測試用例來證明問題並告訴我們。 – CiscoIPPhone 2010-11-07 10:25:40