4.頂點着色器

輸入

    屬性:用頂點數組提供的逐頂點數據

    統一變量和統一變量緩衝區:頂點着色器使用的不變數據

    採樣器:頂點着色器使用的紋理的特殊統一變量類型

    着色器程序:頂點着色器程序源代碼或者描述在操作頂點的可執行文件

內建變量

  • gl_VertexID:頂點的整數索引,highp精度
  • gl_IntanceID:實例化繪圖調用中圖元的實例編號,整數型,highp精度
  • gl_Position:輸出頂點位置的裁剪座標,浮點型,highp精度
  • gl_PointSize:用於寫入以像素表示的點精靈尺寸,浮點型,highp精度
  • gl_FrontFacing:特殊變量,布爾變量

內建統一狀態

    窗口座標範圍 :唯一一個內建統一狀態。gl_DepthRange給出。變量爲 gl_DepthRangeParameters

內建常量:2.0與3.0規範支持的最大數量最小值不一致

3.0

const mediump int gl_MaxVertexAttribs = 16; 
const mediump int gl_MaxVertexUniformVectors = 256;
const mediump int gl_MaxVertexOutputVectors = 16; 

const mediump int gl_MaxVertexTextureImageUnits = 16; //頂點着色器中可使用紋理單元的最大數量最小值
const mediump int gl_MaxCombinedTextureImageUnits = 32;//頂點和片段着色器可用的紋理單元最大數量的總和最小值

2.0

const mediump int gl_MaxVertexAttribs = 8; 
const mediump int gl_MaxVertexUniformVectors = 128;
const mediump int gl_MaxVaryingVectors = 8; 
const mediump int gl_MaxVertexTextureImageUnits = 0; 
const mediump int gl_MaxCombinedTextureImageUnits = 8;
const mediump int gl_MaxTextureImageUnits = 8; 
const mediump int gl_MaxFragmentUniformVectors = 16;
const mediump int gl_MaxDrawBuffers = 1; 

注:代碼使用的字面值每次引用都會被計如同一邊來給你存儲,所以使用不止一次的字面值應該使用宏定義,這樣只會被計數一次,不佔用統一變量的數量。

矩陣變換

模型矩陣:物體座標變換爲世界座標

視圖矩陣:世界座標變換爲眼睛座標

投影矩陣:眼睛座標變換爲裁剪座標

 

模型-視圖矩陣:無api,由應用程序實現
投影矩陣

頂點生成紋理座標?

頂點蒙皮?遊戲?

變換反饋? 粒子動畫、物理學模擬?

頂點紋理,位移貼圖--渲染地形或水面?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章