我對OpenGL有一個非常令人不安的問題。OpenGL燈光出現在對面
我的作業是用人,劍和其他物體創造場景,把點光源放在傢伙的每個「手掌」(綠色在右邊,紅色在左邊),並且有一個定向光來源爲太陽。
這裏是我的程序的兩個版本一個zip:http://www.woofiles.com/dl-245221-OdPUtOaW-Release.zip
(不幸的是,名稱是匈牙利人,「szép_de_rossz_oldalon_a_fény」的意思是「好,但燈是在對面」,和「fény_jó_oldalon_de_ronda」是指「上的燈右側,但醜陋「)。
我的問題是,燈的效果出現在我tesselated參數曲面的另一面。
合乎邏輯的解釋是表面法線不正確,但將其與-1相乘會給出更奇怪的結果。法線向量插值似乎被破壞,剩下的是粗糙的表面,光線不好。所有這一切都通過扭轉法線。 我敢肯定,三角形面向正確的方向,矢量運算是完美無瑕的,並且所有的東西都應該在場景中放置(可以看出劍是綠色的,但是其他表面的那一側是紅色的)。
您是否檢查過着色器以確保它們適合右手座標系?它可能只是一個顛倒z軸的問題。編輯:另外,它聽起來像你正在乘以你的模型視圖矩陣,你可能想看看。 – horatius83 2011-05-04 20:56:47
我不使用自定義着色器,我們必須使用標準管道。我的法線是通過glNormal3f提供給OpenGL的,因此是的,我相信它們是乘以模型視圖矩陣,但不是直接由我。我無法理解的是,如何將法線與-1混淆整個照明? – Vincent 2011-05-04 21:16:44