OpenGL ES9.0 從OpenGL到OpenGL ES

OpneGL ES 是以手持和嵌入式為目標的高級3D圖形應(yīng)用程序編程接口衙伶,OpenGL ES是目前智能手機中占據(jù)統(tǒng)治地位的圖形API况木。支持的平臺Android它褪、iOS擂送、Linux、Windows.

OpenGL ES 開放式圖形庫用于可視化的二維和三維數(shù)據(jù)春贸。OpenGL ES是OpenGL的簡化版本混萝,它消除了冗余功能遗遵,提供了一個既易于學習又更易于在移動圖形硬件中實現(xiàn)的庫。

OpenGL ES 允許應(yīng)用程序利用底層圖形處理器的強大功能逸嘀。iOS設(shè)備上GPU可以執(zhí)行復雜的2D和3D繪圖车要,以及最終圖像中每個像素的復雜著色計算。

OpenGL 圖形管線:


1.png
2.png

Application 應(yīng)用
Primitives 圖元
vertex 頂點
Geometry 幾何
Primitive assembly 圖元裝配
Fragment 片元
Texturing 紋理
Fog 霧化
blending 綁定

頂點著色器:

著色器程序:描述頂點上執(zhí)行操作的頂點著色器程序源代碼或可執(zhí)行文件
頂點著色器輸入:用頂點數(shù)組提供每個頂點的數(shù)據(jù)
uniform:頂點或片元著色器使用的不變數(shù)據(jù)
采樣器:代表頂點著色器使用紋理的特殊統(tǒng)一變量類型崭倘。


3.png

頂點著色業(yè)務(wù):
矩陣變換位置
計算光照公式生成逐頂點顏色
生成/變換紋理坐標
它可以用于執(zhí)行自定義計算翼岁,實施新的變換,照明或者傳統(tǒng)的固定功能所不允許的基于頂點的效果绳姨。

頂點著色器代碼案例:

4.png

圖元裝配:

頂點著色器之后的階段就是圖元裝配
圖元:(Primitive)點登澜、線、三角形
圖元裝配:將頂點數(shù)據(jù)計算成一個個圖元飘庄,在這個階段會執(zhí)行裁剪脑蠕、透視、分割和viewport等變換操作跪削。

圖元類型和頂點確定將被渲染的單獨圖元谴仙,對于每個單獨圖元及對應(yīng)的頂點,圖元裝配階段執(zhí)行的操作包括:將頂點著色器的輸出值執(zhí)行裁剪碾盐、透視晃跺、分割,視口變換后進入光柵化階段毫玖。

光柵化:

在這個階段繪制對應(yīng)的圖元掀虎,光柵化就是將圖元轉(zhuǎn)化成一組二維片段的過程。而這些轉(zhuǎn)化的片段將由片元著色器處理付枫。這些二維片段就是屏幕上可繪制的像素烹玉。


5.png

片元著色器:
著色器程序:描述片段上執(zhí)行操作的片元著色器程序源代碼/可執(zhí)行文件
輸入變量:光柵化單元用差值為每個片段生成的頂點著色器輸出
uniform:頂點、片元著色器使用的不變數(shù)據(jù)
采樣器:代表片元著色器使用紋理的特殊統(tǒng)一變量類型

片元著色器業(yè)務(wù):

計算顏色
獲取紋理值
往像素點中心填充顏色/紋理值
可以用于圖片阐滩、視頻二打、圖形中每個像素的顏色填充、比如給視頻加濾鏡掂榔,實際上就是將視頻中每個圖片的像素點的顏色值進行修改继效。

片元著色器代碼:


7.png

逐片段操作流程:

8.png

像素歸屬測試:
確定幀緩存區(qū)中的位置[Xw,Yw]的像素目前是不是歸屬于OpenGLES所有。例如装获,如果一個顯示OpenGL ES幀緩存區(qū)view被另外一個view所遮蔽瑞信。則在窗口系統(tǒng)的判定中,被遮蔽的像素不屬于OpenGL ES的上下文饱溢。從而不全顯示這些像素喧伞。

而像素歸屬測試是OpenGL ES的一部分,它不由開發(fā)人員人為控制绩郎,而由OpenGL ES內(nèi)部進行潘鲫。

裁剪測試:裁剪測試確定[Xw,Yw]是否位于作為OpenGL ES狀態(tài)的一部分裁剪矩形范圍內(nèi),如果該片段屬于裁剪區(qū)域之外肋杖,則被拋棄溉仑。

深度測試:輸入片段的深度值進行比較,確定片段是否拒絕測試状植。
混合:將新生的片段顏色與保存在幀緩存位置的顏色組合起來
抖動:抖動可以用于最小化浊竟,因為使用有限精度在幀緩存區(qū)中保存顏色值兒產(chǎn)生偽像。

EGL:Embedded Graphics Library

OpenGL ES 命令需要渲染上下文和繪制表面才能完成圖形的繪制津畸。
渲染上下文:存儲相關(guān)OpenGL ES狀態(tài)振定。
繪制表面:是用于繪制圖元的表面,它指定渲染所需要的緩存區(qū)類型肉拓,例如顏色緩存區(qū)后频,深度緩存區(qū),模板緩存區(qū)暖途。

OpenGL ES API 并沒有提供如何創(chuàng)建渲染上下文或者上下文如何連接到原生窗口系統(tǒng)卑惜。EGL是khronos渲染API[如OpenGL ES]和原生窗口系統(tǒng)之間的接口。唯一支持OpenGL ES卻不支持EGL平臺是iOS.

Apple提供自己的EGL API的iOS實現(xiàn)驻售,稱為EAGL露久。

因為每個窗口系統(tǒng)都有不同的定義,所以EGL提供基本的不透明類型-EGLDisplay,這個類型封裝了所有系統(tǒng)相關(guān)性欺栗,用于和原生窗口系統(tǒng)接口毫痕。

由于OpenGL ES是基于C的API,因此受到很廣泛的支持迟几。作為C的API,它與Objective-C Cocoa Touch應(yīng)用程序無縫集成消请。

OpenGL ES規(guī)范中沒有定義窗口層。相反瘤旨,托管操作系統(tǒng)必須提供函數(shù)來創(chuàng)建一個接受命令的OpenGL ES 上下文和一個幀緩存區(qū)梯啤,其中寫入所有繪圖命令的結(jié)果。

在iOS中使用OpenGL ES需要使用iOS類來設(shè)置和呈現(xiàn)繪圖表面存哲,并使用平臺中立的API來呈現(xiàn)其內(nèi)容因宇。

計算機對動畫的實現(xiàn)

10.png
9.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市祟偷,隨后出現(xiàn)的幾起案子察滑,更是在濱河造成了極大的恐慌,老刑警劉巖修肠,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贺辰,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機饲化,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門莽鸭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吃靠,你說我怎么就攤上這事硫眨。” “怎么了巢块?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵礁阁,是天一觀的道長。 經(jīng)常有香客問我族奢,道長姥闭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任越走,我火速辦了婚禮棚品,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弥姻。我一直安慰自己南片,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布庭敦。 她就那樣靜靜地躺著疼进,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秧廉。 梳的紋絲不亂的頭發(fā)上伞广,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音疼电,去河邊找鬼嚼锄。 笑死,一個胖子當著我的面吹牛蔽豺,可吹牛的內(nèi)容都是我干的区丑。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼修陡,長吁一口氣:“原來是場噩夢啊……” “哼沧侥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起魄鸦,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤宴杀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拾因,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旺罢,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡旷余,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扁达。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片正卧。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖罩驻,靈堂內(nèi)的尸體忽然破棺而出穗酥,到底是詐尸還是另有隱情护赊,我是刑警寧澤惠遏,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站骏啰,受9級特大地震影響节吮,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜判耕,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一透绩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧壁熄,春花似錦帚豪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至昌执,卻和暖如春烛亦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背懂拾。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工煤禽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岖赋。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓檬果,卻偏偏與公主長得像,于是被迫代替她去往敵國和親唐断。 傳聞我的和親對象是個殘疾皇子选脊,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345