OpenGL學習筆記之法線向量



須要注意的地方:函數

1.使用glTranslate*函數或者glRotate*函數能夠改變物體的外觀,但法線向量並不會隨之改變。然而,使用glScale*函數,對每一座標軸進行不一樣程度的縮放,頗有可能致使法線向量的不正確,雖然OpenGL提供了一些措施來修正這一問題,但由此也帶來了各類開銷。所以,在使用了法線向量的場合,應儘可能避免使用glScale*函數。即便使用,也最好保證各座標軸進行等比例縮放。spa

2.還有一個地方就是,只能給頂點或者多邊形定義法線向量,不能夠對多邊形的的每一個指定的地方定義頂點(可能初學者會有所誤解,紅皮書有明確說明);orm

法線向量介紹:反射

        根據光的反射定律,由光的入射方向和入射點的法線就能夠獲得光的出射方向。所以,對於指定的物體,在指定了光源後,便可計算出光的反射方向,進而計算出光照效果的畫面。在OpenGL中,法線的方向是用一個向量來表示。
不幸的是,OpenGL並不會根據你所指定的多邊形各個頂點來計算出這些多邊形所構成的物體的表面的每一個點的法線(這話聽着有些迷糊),一般,爲了實現光照效果,須要在代碼中爲每個頂點指定其法線向量。
指定法線向量的方式與指定顏色的方式有雷同之處。在指定顏色時,只須要指定每個頂點的顏色,OpenGL就能夠自行計算頂點之間的其它點的顏色。而且,顏色一旦被指定,除非再指定新的顏色,不然之後指定的全部頂點都將以這一貫量做爲本身的顏色。在指定法線向量時,只須要指定每個頂點的法線向量,OpenGL會自行計算頂點之間的其它點的法線向量。而且,法線向量一旦被指定,除非再指定新的法線向量,不然之後指定的全部頂點都將以這一貫量做爲本身的法線向量。使用glColor*函數能夠指定顏色,而使用glNormal*函數則能夠指定法線向量。

di

相關文章
相關標籤/搜索