OpenGL ES 框架詳細(xì)解析(二) —— 關(guān)于OpenGL ES

版本記錄

版本號 時(shí)間
V1.0 2017.09.28

前言

OpenGL ES是一個(gè)強(qiáng)大的圖形庫低零,是跨平臺的圖形API设捐,屬于OpenGL的一個(gè)簡化版本。iOS系統(tǒng)可以利用OpenGL ES將圖像數(shù)據(jù)直接送入到GPU進(jìn)行渲染拴竹,這樣避免了從CPU進(jìn)行計(jì)算再送到顯卡渲染帶來的性能的高消耗晦款,能帶來來更好的視頻效果和用戶體驗(yàn)。接下來幾篇就介紹下iOS 系統(tǒng)的 OpenGL ES框架凤薛。感興趣的可以看上面幾篇挥萌。
1. OpenGL ES 框架詳細(xì)解析(一) —— 基本概覽

關(guān)于OpenGL ES

可以參考參考文檔

開放圖形庫(OpenGL)用于2D和3D數(shù)據(jù)的可視化。 它是一個(gè)多功能的開放標(biāo)準(zhǔn)圖形庫枉侧,支持2D和3D數(shù)字內(nèi)容創(chuàng)建引瀑,機(jī)械和建筑設(shè)計(jì),虛擬原型榨馁,飛行模擬憨栽,視頻游戲等應(yīng)用。 您可以使用OpenGL配置3D圖形管道并提交數(shù)據(jù)翼虫。 頂點(diǎn)被變換和點(diǎn)亮屑柔,組裝成圖元,并進(jìn)行光柵化以創(chuàng)建2D圖像珍剑。 OpenGL旨在將函數(shù)調(diào)用轉(zhuǎn)換為可發(fā)送到底層圖形硬件的圖形命令掸宛。 因?yàn)檫@個(gè)底層硬件專門用于處理圖形命令,因此OpenGL繪圖通常非痴凶荆快唧瘾。

用于嵌入式系統(tǒng)的OpenGL(OpenGL ES)是OpenGL的簡化版本,可以消除冗余功能别凤,從而為移動圖形硬件提供更容易學(xué)習(xí)和更易于實(shí)現(xiàn)的庫饰序。


概覽

OpenGL ES允許應(yīng)用程序利用底層圖形處理器的功能。 iOS設(shè)備上的GPU可以執(zhí)行復(fù)雜的2D和3D繪圖规哪,以及最終圖像中每個(gè)像素的復(fù)雜陰影計(jì)算求豫。 您應(yīng)該使用OpenGL ES,如果您的應(yīng)用程序的設(shè)計(jì)要求調(diào)用可直接和全面訪問GPU硬件。 OpenGL ES的典型客戶端包括提供3D圖形的視頻游戲和模擬蝠嘉。

OpenGL ES是一個(gè)低級的最疆,以硬件為重點(diǎn)的API。 雖然它提供了最強(qiáng)大和靈活的圖形處理工具蚤告,但它也具有陡峭的學(xué)習(xí)曲線努酸,對您的應(yīng)用程序的整體設(shè)計(jì)有重大影響。 對于需要高性能圖形用于更專業(yè)化應(yīng)用的應(yīng)用罩缴,iOS提供了幾個(gè)更高級別的框架:

  • Sprite Kit框架提供了一個(gè)優(yōu)化用于創(chuàng)建2D游戲的硬件加速動畫系統(tǒng)。 (請參閱Sprite Kit Programming Guide层扶。)
  • Core Image框架為靜態(tài)和視頻圖像提供實(shí)時(shí)過濾和分析箫章。 (見Core Image Programming Guide)
  • Core Animation為所有iOS應(yīng)用程序提供硬件加速的圖形渲染和動畫基礎(chǔ)設(shè)施,以及一個(gè)簡單的聲明式編程模型镜会,使實(shí)現(xiàn)復(fù)雜的用戶界面動畫變得簡單檬寂。 (見Core Animation Programming Guide
  • 您可以使用UIKit框架中的功能向Cocoa Touch用戶界面添加基于物理的動畫和其他特效。

1. OpenGL ES Is a Platform-Neutral API Implemented in iOS - OpenGL ES是iOS中實(shí)現(xiàn)的平臺中立API

因?yàn)镺penGL ES是一個(gè)基于C的API戳表,它非常便于攜帶并得到廣泛的支持桶至。 作為C API,它與Objective-C Cocoa Touch應(yīng)用程序無縫集成匾旭。 OpenGL ES規(guī)范沒有定義窗口層; 而是镣屹,主機(jī)操作系統(tǒng)必須提供函數(shù)來創(chuàng)建OpenGL ES渲染上下文,該接口接受命令价涝,而幀緩沖區(qū)則將繪制任何繪圖命令的結(jié)果女蜈。 在iOS上使用OpenGL ES需要使用iOS類來設(shè)置和呈現(xiàn)繪圖表面,并使用平臺中立的API來呈現(xiàn)其內(nèi)容色瘩。

相關(guān)參考:Checklist for Building OpenGL ES Apps for iOS, Configuring OpenGL ES Contexts

2. GLKit Provides a Drawing Surface and Animation Support - GLKit提供繪圖表面和動畫支持

UIKit框架定義的視圖和視圖控制器可以控制iOS上的視覺內(nèi)容的呈現(xiàn)伪窖。 GLKit框架提供這些類的OpenGL ES感知版本。 當(dāng)您開發(fā)OpenGL ES應(yīng)用程序時(shí)居兆,您可以使用GLKView對象來呈現(xiàn)OpenGL ES內(nèi)容覆山。 您還可以使用GLKViewController對象來管理視圖并支持動畫化其內(nèi)容。

相關(guān)參考:Drawing with OpenGL ES and GLKit

3. iOS Supports Alternative Rendering Targets - iOS支持可選渲染目標(biāo)

除了繪制內(nèi)容以填充整個(gè)屏幕或視圖層次結(jié)構(gòu)的一部分外泥栖,您還可以使用OpenGL ES幀緩沖區(qū)對象進(jìn)行其他渲染策略簇宽。 iOS實(shí)現(xiàn)標(biāo)準(zhǔn)的OpenGL ES幀緩沖對象,您可以將其用于渲染到屏幕外緩沖區(qū)或紋理吧享,以便在OpenGL ES場景中的其他位置使用晦毙。 此外,iOS上的OpenGL ES支持渲染到Core Animation層(CAEAGLLayer類)耙蔑,然后您可以將其與其他圖層結(jié)合见妒,構(gòu)建應(yīng)用的用戶界面或其他視覺顯示

相關(guān)參考:Drawing to Other Rendering Destinations

4. Apps Require Additional Performance Tuning - 應(yīng)用程序需要額外的性能調(diào)優(yōu)

圖形處理器是針對圖形操作優(yōu)化的并行化設(shè)備。 為了在應(yīng)用程序中獲得出色的表現(xiàn),您必須仔細(xì)設(shè)計(jì)應(yīng)用程序以將數(shù)據(jù)和命令提供給OpenGL ES须揣,以便圖形硬件與您的應(yīng)用程序并行運(yùn)行盐股。 調(diào)整不當(dāng)?shù)膽?yīng)用程序會強(qiáng)制CPU或GPU等待另一個(gè)完成處理命令。

您應(yīng)該設(shè)計(jì)您的app以有效地使用OpenGL ES API耻卡。 一旦你完成app疯汁,請使用Instruments來調(diào)整應(yīng)用程式的成效。 如果您的應(yīng)用程序在OpenGL ES中出現(xiàn)瓶頸卵酪,請使用本指南中提供的信息來優(yōu)化應(yīng)用程序的性能幌蚊。

Xcode提供了幫助您提高OpenGL ES應(yīng)用程序性能的工具。

相關(guān)參考:OpenGL ES Design Guidelines, Best Practices for Working with Vertex Data, Best Practices for Working with Texture Data, Best Practices for Shaders, Tuning Your OpenGL ES App

5. OpenGL ES May Not Be Used in Background Apps - OpenGL ES可能不會用于后臺應(yīng)用程序

在后臺運(yùn)行的應(yīng)用程序可能不會調(diào)用OpenGL ES函數(shù)溃卡。 如果您的應(yīng)用程序在后臺訪問圖形處理器溢豆,則會由iOS自動終止。 為了避免這種情況瘸羡,您的應(yīng)用程序應(yīng)該先刷新之前提交給OpenGL ES的掛起命令漩仙,然后才能移動到后臺,并避免調(diào)用OpenGL ES犹赖,直到它移回到前臺队他。

相關(guān)參考:Multitasking, High Resolution, and Other iOS Features

6. OpenGL ES Places Additional Restrictions on Multithreaded Apps - OpenGL ES為多線程應(yīng)用程序添加了其他限制

設(shè)計(jì)應(yīng)用程序以利用并發(fā)功能可以幫助您提高應(yīng)用程序的性能。 如果您打算在OpenGL ES應(yīng)用程序中添加并發(fā)性峻村,則必須確保它不會同時(shí)從兩個(gè)不同的線程訪問相同的上下文麸折。

相關(guān)參考:Concurrency and OpenGL ES


學(xué)習(xí)規(guī)劃進(jìn)程


其他參考

OpenGL ES是由Khronos集團(tuán)定義的開放標(biāo)準(zhǔn)进统。 有關(guān)OpenGL ES標(biāo)準(zhǔn)的更多信息,請參閱其網(wǎng)頁http://www.khronos.org/opengles/浪听。

  • Addison-Wesley發(fā)布的OpenGL? ES 3.0 Programming Guide全面介紹了OpenGL ES的概念螟碎。
  • OpenGL? Shading Language, Third Edition,也由Addison-Wesley出版迹栓,提供了許多可用于OpenGL ES應(yīng)用程序的著色算法掉分。 您可能需要修改其中一些算法才能在移動圖形處理器上高效運(yùn)行。
  • OpenGL ES API Registry是OpenGL ES規(guī)范的官方存儲庫,OpenGL ES著色語言規(guī)范以及OpenGL ES擴(kuò)展的文檔酥郭。
  • OpenGL ES Framework Reference介紹了Apple將OpenGL ES集成到iOS中提供的平臺特定函數(shù)和類华坦。
  • iOS Device Compatibility Reference提供了有關(guān)您的應(yīng)用程序可用的硬件和軟件功能的更多詳細(xì)信息。
  • GLKit Framework Reference介紹了由Apple提供的一個(gè)框架不从,可以更輕松地開發(fā)OpenGL ES 2.0和3.0應(yīng)用程序惜姐。

參考文章

1. OpenGLES渲染管道,頂點(diǎn)著色器(VertexShader) 椿息,片元著色器(FragmentShader)

后記

未完歹袁,待續(xù)~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市寝优,隨后出現(xiàn)的幾起案子条舔,更是在濱河造成了極大的恐慌,老刑警劉巖倡勇,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逞刷,死亡現(xiàn)場離奇詭異嘉涌,居然都是意外死亡妻熊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門仑最,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扔役,“玉大人,你說我怎么就攤上這事警医∫谛兀” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵预皇,是天一觀的道長侈玄。 經(jīng)常有香客問我,道長吟温,這世上最難降的妖魔是什么序仙? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮鲁豪,結(jié)果婚禮上潘悼,老公的妹妹穿的比我還像新娘。我一直安慰自己爬橡,他們只是感情好治唤,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著糙申,像睡著了一般宾添。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天辞槐,我揣著相機(jī)與錄音掷漱,去河邊找鬼。 笑死榄檬,一個(gè)胖子當(dāng)著我的面吹牛卜范,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鹿榜,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼海雪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了舱殿?” 一聲冷哼從身側(cè)響起奥裸,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沪袭,沒想到半個(gè)月后湾宙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冈绊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年侠鳄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片死宣。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伟恶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出毅该,到底是詐尸還是另有隱情博秫,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布眶掌,位于F島的核電站挡育,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏朴爬。R本人自食惡果不足惜即寒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寝殴。 院中可真熱鬧蒿叠,春花似錦、人聲如沸蚣常。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抵蚊。三九已至施绎,卻和暖如春溯革,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谷醉。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工致稀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俱尼。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓抖单,卻偏偏與公主長得像,于是被迫代替她去往敵國和親遇八。 傳聞我的和親對象是個(gè)殘疾皇子矛绘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容