OpenGL ES (OpenGL for Embedded Systems) 是以手持和嵌入式爲目標的⾼級3D圖形應用程序編程接口(API). OpenGL ES 是目前智能手機中佔據統治地位的圖形API.支持的平 臺: iOS, Andriod , BlackBerry ,bada ,Linux ,Windows。 編程
頂點着色器輸入: 1.着⾊器程序—描述頂點上執行行操做的頂點着色器程序源代碼/可執行文件 2.頂點着色器輸入(屬性) — 用頂點數組提供每一個頂點的數據 3.統一變量(uniform)—頂點/片元着色器使用的不變數據 4.採樣器—表明頂點着色器使用紋理的特殊統一變量類型.數組
頂點着⾊器業務: 1.矩陣變換位置 2.計算光照公式生成逐頂點顏色 3.生成/變換紋理座標緩存
代碼案例bash
attribute vec4 position;
attribute vec2 textCoordinate;
uniform mat4 rotateMatrix;
varying lowp vec2 varyTextCoord;
void main()
{
varyTextCoord = textCoordinate; vec4 vPos = position;
vPos = vPos * rotateMatrix; gl_Position = vPos;
}
複製代碼
頂點着色器以後,下一個階段就是圖元裝配. 圖元(Primitive): 點,線,三⻆角形等. 圖元裝配: 將頂點數據計算成一個圖元.在這個階段會執行裁剪、透視分割和 Viewport變換操做。 圖元類型和頂點索肯定將被渲染的單獨圖元。對於每一個單獨圖元及其對應的頂點,圖 元裝配階段執行的操做包括:將頂點着色器的輸出值執行裁剪、透視分割、視⼝口變換 後進入光柵化階段測試
在這個階段繪製對應的圖元(點/線/三角形). 光柵化就是將圖元轉化成一組二維片斷 的過程.而這些轉化的片斷將由片元着色器處理.這些二維片斷就是屏幕上可繪製的像素spa
片元着⾊器/⽚段着⾊器輸入: 1.着⾊器程序—描述片斷上執行操做的頂點着色器程序源代碼/可執行⽂件 2.輸入變量— 光柵化單元⽤用插值爲每一個片斷生成的頂點着色器輸出 3.統一變量(uniform)—頂點/片元着⾊器使用的不變數據 4.採樣器—表明片元着色器使用紋理的特殊統⼀一變量類型code
⽚元着⾊器 業務: 1.計算顏色 2.獲取紋理理值 3.往像素點中填充顏色值(紋理值/顏色值); 總結: 它能夠用於圖片/視頻/圖形中每一個像素的顏色填充(⽐如給視頻添加濾鏡,實際上就是將視頻中每一個圖片的像素點顏色填充進行修改. 代碼案例orm
varying lowp vec2 varyTextCoord;
uniform sampler2D colorMap;
void main()
{
gl_FragColor = texture2D(colorMap, varyTextCoord); }
複製代碼
像素歸屬測試
: 肯定幀緩存區中位置(Xw,Yw)的像素⽬前是不是歸屬於OpenGL ES全部.例如,若是一個顯示OpenGL ES幀緩存區View被另外⼀個View所遮蔽.則窗⼝系統能夠肯定被遮蔽的像素不屬於OpenGL ES上下文.從⽽而不全顯示這些像素.
而像素歸屬測試是OpenGL ES 的一部分,它不由開發者人爲控制,而是由OpenGL ES 內部進行.
裁剪測試
: 裁剪測試肯定(Xw,Yw)是否位於做爲OpenGL ES狀態的一部分裁剪矩形範圍內.若是該片斷位於裁剪區域以外,則被拋棄.
深度測試
: 輸入片斷的深度值進步比較,肯定⽚段是否拒絕測試
混合
: 混合將新生成的片斷顏色與保存在幀緩存的位置的顏色值組合起來.
抖動
: 抖動可用於最小化由於使用有限精度在幀緩存區中保存顏⾊值而產`生的僞像.