1. 程式人生 > >頂點著色器 學習筆記

頂點著色器 學習筆記

裁剪 str cati strong log href open rotate 程序

頂點著色器

技術分享

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;

投影矩陣取眼睛坐標“裁剪”後,生成裁剪坐標。

記錄問題:如何判斷圖元坐標在視景體中,來完成裁剪操作?

參考鏈接

shader三種變量類型(uniform,attribute和varying)

esTransform.c

頂點著色器 學習筆記