頂點着色器 學習筆記


頂點着色器

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)

esTransform.c

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM