頂點着色器

shader的三種變量類型
- uniform變量一般用來表示:變換矩陣,材質,光照參數和顏色等信息;如果在vertex和fragment兩者之間聲明方式完全一樣,則它可以在vertex和fragment共享使用;只讀常量數據;
-
attribute變量是只能在vertex shader中使用的變量;一般用attribute變量來表示一些頂點的數據,如:頂點坐標,法線,紋理坐標,頂點顏色等;
- varying變量是vertex和fragment shader之間做數據傳遞用。一般vertex shader修改varying變量的值,然后fragment shader使用該varying變量的值。因此varying變量在vertex和fragment shader二者之間的聲明必須是一致的。application不能使用此變量。
矩陣變換
模型-視圖-投影(MVP)矩陣的概念:
- 模型矩陣--將物體坐標變化成世界坐標
- 視圖矩陣--將世界坐標變換成眼睛坐標
- 投影矩陣--將眼睛坐標變換成裁剪坐標
在固定管線OpenGL中,模型-視圖矩陣可以用glRotatef,glTranslatef,glScalef等函數創建;可編程管線已不可用這些函數,可在應用程序中處理;模板代碼esTransfrom.c;
投影矩陣取眼睛坐標“裁剪”后,生成裁剪坐標。
頂點法線
法線是垂直於物體表面的單位長度的向量。OpenGL ES的表面是一個三角形。我們指定一個頂點法線而不是指定平面法線。二者的區別在於頂點法線的方向不一定與平面法線的方向一致。頂點向量的方向是其所在幾個三角平面的平均值。取平均使物體得以平滑着色。

每個頂點(排除掉角落和邊緣的頂點)被四個多邊形共享,這個頂點的法線就應該是所有共享面法線的和在歸一化的結果。
記錄問題:如何判斷圖元坐標在視景體中,來完成裁剪操作?
參考鏈接
shader三種變量類型(uniform,attribute和varying)
