iOS開發(fā)OpenGL新手入門

轉(zhuǎn)載請注明出處:http://www.olinone.com/

寫在前頭蛉抓,好久沒有更新博客,感謝老朋友的再次來訪剃诅,同時也歡迎新朋友~

說起OpenGL巷送,相信大不多數(shù)朋友都不會陌生,或多或少都有接觸矛辕。本文不屬于OpenGL提高篇笑跛,主要目的在于幫助新手更快熟悉iOS中如何使用OpenGL,關(guān)于這方面的介紹聊品,網(wǎng)上也有很多飞蹂,本文主要任務(wù)在于整理,介紹稍有偏重翻屈。這里有比較完整的Demo陈哑,可以協(xié)助大家更快上手

OpenGL版本

iOS系統(tǒng)默認支持OpenGl ES1.0、ES2.0以及ES3.0 3個版本妖胀,三者之間并不是簡單的版本升級芥颈,設(shè)計理念甚至完全不同惠勒,在開發(fā)OpenGL項目前赚抡,需要根據(jù)業(yè)務(wù)需求選擇合適的版本。這方面的介紹不少纠屋,不再展開涂臣。在學(xué)習(xí)OpenGL代碼的時候也需要知道它對應(yīng)著哪個版本,在ES1中執(zhí)行ES2代碼是看不到任何效果的售担,你可以在初始化EAGLContext時指定ES版本號

EAGLContext*context=[[EAGLContextalloc]initWithAPI:kEAGLRenderingAPIOpenGLES1];

OpenGL坐標(biāo)系

OpenGL坐標(biāo)系不同于UIKit坐標(biāo)系赁遗,其實它是這樣的

除了方向,還有一點需要注意族铆,默認情況各個方向坐標(biāo)值范圍為(-1岩四,1),而不是UIKit中的(0哥攘,320)剖煌。當(dāng)繪制點(320,0)逝淹,它并不會出現(xiàn)在屏幕右上角耕姊。在ES1中,可以通過以下代碼將坐標(biāo)系轉(zhuǎn)化為熟悉的(320栅葡,480)

-(void)glkView:(GLKView*)viewdrawInRect:(CGRect)rect{

glViewport(0,0,rect.size.width*2,rect.size.height*2);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glOrthof(0,320,0,480,-1024,1024);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

}

——————————————————olinone出品——————————————————

猥瑣的分割線過后茉兰,接下來說說iOS中如何使用OpenGL

GLKViewController & GLKView

機智的碼農(nóng)是不是已經(jīng)發(fā)現(xiàn)這兩個對象, 為了方便大家更快的開發(fā)欣簇,系統(tǒng)為OpenGL提供了簡單的封裝规脸,繼承GLKViewController定義自己的ViewController坯约,GLKViewController的view為GLKView類,GLKView的delegate定義了繪制回調(diào)函數(shù)

-(void)glkView:(GLKView*)viewdrawInRect:(CGRect)rect

GLKViewController定義數(shù)據(jù)刷新函數(shù)莫鸭,當(dāng)子類實現(xiàn)-(void)update方法鬼店,glkViewControllerUpdate方法將不再被調(diào)用

-(void)glkViewControllerUpdate:(GLKViewController*)controller

HJGLKViewControllerDemo模擬了GLKViewController方法實現(xiàn),有興趣的童鞋可以查看GLKViewController內(nèi)部實現(xiàn)機制黔龟。需要補充一點妇智,默認情況下,GLKViewController渲染RunLoop并非NSRunLoopCommonModes氏身,而是NSDefaultRunLoopMode巍棱,因此在UIKit中使用GLKViewController,當(dāng)滑動界面時蛋欣,OpenGL是不會渲染的航徙,為了解決這個問題,可以使用HJGLKViewController替換GLKViewController陷虎,HJGLKViewController中默認渲染RunLoop使用NSRunLoopCommonModes模式

EAGLContext

在介紹選擇版本時已經(jīng)提到EAGLContext到踏,與UIKit中CGContextRef相似,EAGLContext相當(dāng)于OpenGL繪制句柄或者上下文尚猿,在繪制試圖之前窝稿,需要指定使用創(chuàng)建的上下文繪制

[EAGLContextsetCurrentContext:view.context];

當(dāng)一個APP可能存在多個EAGLContext時,需要處理并存沖突等問題凿掂,比如大家所熟知的GPUImage伴榔,都會使用到EAGLContext。因此庄萎,在使用中要記得及時釋放踪少。有興趣的朋友可以看看這篇文章

Draw

OpenGL繪制本文就不做介紹,HJGLKViewControllerDemo中有大量的示例糠涛,順便推薦幾篇相關(guān)文章

1援奢、詳解第一個OpenGL程序

2、西蒙iPhone-OpenGL ES 中文教程專題

3忍捡、Cocos2d源碼

小貼士:當(dāng)App退到后臺時集漾, 切記暫停OpenGL繪制,否則可能導(dǎo)致crash


后記:iOS-Developer-Documents-Chinese是國內(nèi)第一個蘋果文檔翻譯組織锉罐,歡迎有志翻譯蘋果官方文檔的朋友加入帆竹,QQ群:486111671

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市脓规,隨后出現(xiàn)的幾起案子栽连,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秒紧,死亡現(xiàn)場離奇詭異绢陌,居然都是意外死亡,警方通過查閱死者的電腦和手機熔恢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門脐湾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叙淌,你說我怎么就攤上這事秤掌。” “怎么了鹰霍?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵闻鉴,是天一觀的道長。 經(jīng)常有香客問我茂洒,道長孟岛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任督勺,我火速辦了婚禮渠羞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘智哀。我一直安慰自己次询,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布盏触。 她就那樣靜靜地躺著渗蟹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赞辩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天授艰,我揣著相機與錄音辨嗽,去河邊找鬼。 笑死淮腾,一個胖子當(dāng)著我的面吹牛糟需,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谷朝,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼洲押,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了圆凰?” 一聲冷哼從身側(cè)響起杈帐,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挑童,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體累铅,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年站叼,在試婚紗的時候發(fā)現(xiàn)自己被綠了娃兽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡尽楔,死狀恐怖投储,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阔馋,我是刑警寧澤轻要,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站垦缅,受9級特大地震影響冲泥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜壁涎,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一凡恍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怔球,春花似錦嚼酝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至担汤,卻和暖如春涎跨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背崭歧。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工隅很, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人率碾。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓叔营,卻偏偏與公主長得像,于是被迫代替她去往敵國和親所宰。 傳聞我的和親對象是個殘疾皇子绒尊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

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