iOS端OpenGL ES 的基本使用

OpenGL ES是針對嵌入式系統(tǒng)的OpenGL標準,iPhone端支持的是OpenGL ES 2.0. 并且iOS5之后引入了GLkit框架,方便我們使用OpenGL進行圖形繪制.

使用3D數(shù)據(jù)生成一個2D圖像的過程叫做渲染.OpenGL ES 為兩個內(nèi)存區(qū)域間的數(shù)據(jù)交換定義了緩存的概念.緩存是指圖形處理器能夠控制和管理的連續(xù)RAM.

幾乎所有程序提供給GPU的數(shù)據(jù)都應(yīng)該放入緩存中. 為緩存提供數(shù)據(jù)有以下7個步驟:

1. 生成 ---請求OpenGL ES 為圖形處理器控制的緩存生成一個獨一無二的標識符.----? glGenbuffers()

2.綁定? 告訴OpenGL ES 為接下來的運算使用一個緩存? -----glBindBuffer()

3.緩存數(shù)據(jù)?? ----讓OpenGLES 為當前綁定的緩存分配并初始化足夠的連續(xù)內(nèi)存.? ----glBufferData()

4. 啟用? 或者 禁止 --告訴OpenGL ES 在接下的渲染中是否使用緩存中的數(shù)據(jù)? ------glEnableVertexAttribArray()

5. 設(shè)置指針? 告訴OpenGLES 在緩存中的數(shù)據(jù)的類型和所有需要訪問的數(shù)據(jù)的內(nèi)存偏移值 --- glVertexAttribPointer()

6. 繪圖 -- 告訴OpenGL ES 使用當前綁定并啟用的緩存中的數(shù)據(jù)渲染整個場景或者某個場景的一部分. ---glDrawArrays()

7.刪除? -- 告訴OpenGL ES 刪除以前生成的緩存并釋放相關(guān)的資源.-----glDeleteBuffers()

使用GLKBaseEffect 能減少需要編寫的代碼,可以不用我們自己寫"Shading Language"去編寫GPU程序.

1.glGenBuffers(1, &buffer)函數(shù),第一個參數(shù)用于指定要生成的緩存標識符的數(shù)量,第二個參數(shù)是一個指針,指向生成的標識符的內(nèi)存保存位置.

2.glBindBuffer(GL_ARRAY_BUFFER, buffer);函數(shù)綁定用于指定標識符的緩存到當前緩存.第一個參數(shù)是一個常量,用于指定要綁定哪一種類型的緩存.

3.glBufferData(GL_ARRAY_BUFFER, sizeof(squareVertexData), squareVertexData, GL_STATIC_DRAW);
第一個參數(shù)用于指定要更新當前上下文中所綁定的是哪一個緩存.第二個參數(shù)指定要復(fù)制進這個緩存的字節(jié)的數(shù)量.第三個參數(shù)是要復(fù)制的字節(jié)的地址.最后第四個參數(shù)提示了緩存在未來的運算中可能將會被怎樣使用.

4.glEnableVertexAttribArray(GLKVertexAttribPosition),用來啟動頂點緩存渲染操作.

5.glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 3, 0),這個函數(shù)告訴OpenGL ES頂點數(shù)據(jù)在哪里,以及怎么解釋為每一個頂點保存的數(shù)據(jù).第一個參數(shù)指示當前綁定的緩存包含每個頂點的位置信息.第二個參數(shù)指示每個位置有3個部分.第三個參數(shù)告訴OpenGL ES每個部分都保存為一個浮點類型的值.第四個參數(shù)告訴OpenGL ES 小數(shù)點固定數(shù)據(jù)是否可以被改變.

6.通過glDrawArrays()來繪圖.glDrawArrays(GL_LINE_LOOP, 0, 3);第一個參數(shù)告訴GPU怎么處理在綁定的頂點緩存內(nèi)的頂點數(shù)據(jù).第二個參數(shù)和第三個參數(shù)分別指定緩存內(nèi)的需要渲染的第一個頂點位置和需要渲染的頂點的數(shù)量.

7.刪除不需要的頂點緩存和上下文

glDeleteBuffers(1,&vertexBufferID);




有一些使用的例子在這里:https://github.com/Wutaotao692732757/LearnOpenGLDemo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末于个,一起剝皮案震驚了整個濱河市氛魁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厅篓,老刑警劉巖秀存,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異羽氮,居然都是意外死亡或链,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門档押,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澳盐,“玉大人,你說我怎么就攤上這事令宿〉鸢遥” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵粒没,是天一觀的道長筛婉。 經(jīng)常有香客問我,道長癞松,這世上最難降的妖魔是什么爽撒? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮响蓉,結(jié)果婚禮上硕勿,老公的妹妹穿的比我還像新娘。我一直安慰自己枫甲,他們只是感情好源武,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布扼褪。 她就那樣靜靜地躺著,像睡著了一般粱栖。 火紅的嫁衣襯著肌膚如雪迎捺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天查排,我揣著相機與錄音,去河邊找鬼抄沮。 笑死跋核,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的叛买。 我是一名探鬼主播砂代,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼率挣!你這毒婦竟也來了刻伊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤椒功,失蹤者是張志新(化名)和其女友劉穎捶箱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體动漾,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡丁屎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了旱眯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晨川。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖删豺,靈堂內(nèi)的尸體忽然破棺而出共虑,到底是詐尸還是另有隱情,我是刑警寧澤呀页,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布妈拌,位于F島的核電站,受9級特大地震影響赔桌,放射性物質(zhì)發(fā)生泄漏供炎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一疾党、第九天 我趴在偏房一處隱蔽的房頂上張望音诫。 院中可真熱鬧,春花似錦雪位、人聲如沸竭钝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽香罐。三九已至卧波,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間庇茫,已是汗流浹背港粱。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旦签,地道東北人查坪。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像宁炫,于是被迫代替她去往敵國和親偿曙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

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