的話題是很老,但我會回答它誰可以在這裏尋求任何幫助,任何初學者:
1)& 2)
法線貼圖是像一個普通的漫反射紋理,你需要從磁盤加載它,像使用漫反射紋理一樣創建您的紋理2D,並使用其他紋理將其鎖定,以將其發送到着色器。 因此,總結一下,正常的地圖,高度圖等在處理CPU端時並沒有什麼不同......它總是加載它們,創建紋理並鎖定它們。
3)
法線貼圖只是存儲每一個片段的法線貼圖的方式。 將它們與相應的漫反射紋理一起使用會更好,因爲這是您可以僞造小細節的方式。儘管如此,在某些情況下並不總是必需的...例如,上次我正在繪製水的方法時......我使用了dudv地圖和法線貼圖,但沒有使用相應的漫反射貼圖,因爲我用於渲染成紋理以實現反射。
4)
正常映射被映射具有相同的紋理座標作爲漫反射紋理... 它意味着如果你有一個四至極座標是0; 0,0 1,1 0, 1; 1 這些是您用於映射兩個紋理的座標。
5)
你可以做到這一點沒有着色器,我想......你甚至可以不用OpenGL的,如果你想...着色器是專爲這些類型的操作,並且它會更容易用着色器做到這一點。
因此,法線貼圖是將法線向量編碼爲顏色的貼圖... 法線向量是3D向量,顏色也是3D向量。 當您使用光照時,通常會將法線從頂點着色器發送到片段着色器......片段着色器將插值頂點法線值以找出像素自身法線向量的近似值。 這是默認完成的...
使用法線貼圖,您不使用頂點法線矢量,而是在紋理中編碼的法線矢量。
首先,您必須將光照計算從世界空間轉換爲切線空間,這是在頂點着色器中完成的。
然後,您將像素材貼圖一樣在片段着色器中採樣法線貼圖。您將獲得像素的RGB顏色。 您必須將該值轉換爲法向量,即將其乘以2並減1,即rgb * 2 - 1,然後將其用作光照計算中的法向量。
謝謝,nVidia演示文稿和3DKingdoms演示文稿非常棒。我見過一個paulsprojects,但是當它在立方體地圖上開始時我就迷了路。 – zyndor 2010-09-26 16:54:31