輸入
屬性:用頂點數組提供的逐頂點數據
統一變量和統一變量緩衝區:頂點着色器使用的不變數據
採樣器:頂點着色器使用的紋理的特殊統一變量類型
着色器程序:頂點着色器程序源代碼或者描述在操作頂點的可執行文件
內建變量
- 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,由應用程序實現
投影矩陣
頂點生成紋理座標?
頂點蒙皮?遊戲?
變換反饋? 粒子動畫、物理學模擬?
頂點紋理,位移貼圖--渲染地形或水面?