一、了解 OpenGL 常見專有名詞

OpenGL + OpenGL ES +Metal 系列文章匯總

狀態(tài)機(jī)

可以理解為一個保存對象當(dāng)前狀態(tài)令野,且可以根據(jù)輸入修改當(dāng)前狀態(tài)進(jìn)行響應(yīng)的機(jī)器

特點

  • 記憶功能:保存當(dāng)前狀態(tài)(如使用顏色、混合功能是否開啟等)
  • 接收輸入:根據(jù)輸入修改當(dāng)前狀態(tài),且有相應(yīng)輸出
  • 進(jìn)入停機(jī)狀態(tài)時棉安,不再接受輸入,且停止工作

上下文 Context

  • 一個保存OpenGL中各種狀態(tài)的龐大狀態(tài)機(jī)铸抑,
  • 是OpenGL指令執(zhí)行的基礎(chǔ)贡耽,需要在調(diào)用指令之前創(chuàng)建

OpenGL函數(shù) 與 上下文

  • 不論何種語言,OpenGL函數(shù)都是面向過程的函數(shù)
  • 函數(shù)本質(zhì):對context中某個狀態(tài)/對象進(jìn)行操作
  • 可以通過對OpenGL指令的封裝鹊汛,將OpenGL的相關(guān)函數(shù)調(diào)用封裝成一個面向?qū)ο蟮膱D形API

問題:反復(fù)上下文切換/大量修改渲染狀態(tài)蒲赂,導(dǎo)致GPU開銷較大

  • 針對不同模塊,創(chuàng)建不同的context進(jìn)行狀態(tài)管理刁憋,context之間共享紋理滥嘴、緩沖區(qū)等資源

渲染 Rendering

將圖形/圖像數(shù)據(jù)通過解碼,將其顯示繪制到屏幕上的操作

頂點數(shù)組 VertexArray至耻、頂點緩沖區(qū) VertexBuffer

頂點:繪制圖形時頂點位置的數(shù)據(jù)

OpenGL ES中的圖元類型

屏幕中的所有圖形/圖像若皱,都是由這三種圖元組合而成的

  • 三角形

頂點數(shù)據(jù)存儲方式

頂點數(shù)組與頂點緩沖區(qū)的區(qū)別在于頂點數(shù)據(jù)的存儲方式不同

  • 存儲在內(nèi)存中镊叁,即 【頂點數(shù)組】
  • 存儲在GPU提前分配的顯存中,即 【頂點緩沖區(qū)】

管線

可以理解為流水線走触,該流水線有一個固定順序的操作晦譬,需要按著這個順序一個個執(zhí)行

固定管線/存儲著色器

  • 一個已經(jīng)封裝好的Shader程序,開發(fā)者使用時互广,只需要傳入相應(yīng)參數(shù)敛腌,即可快速完成渲染,類似蘋果系統(tǒng)中封裝好的API
  • 當(dāng)固定管線無法完成每個業(yè)務(wù)時惫皱,需要將與業(yè)務(wù)相關(guān)的部分變成可編程像樊,用戶根據(jù)需要自定義管線來完成業(yè)務(wù)
  • 目前OpenGL中可編程的僅有兩個程序:頂點著色器、片元著色器

頂點著色器

  • OpenGL中用來處理頂點相關(guān)代碼的程序
  • 將頂點坐標(biāo)由 自身坐標(biāo)系 轉(zhuǎn)換到 歸一坐標(biāo)系
  • 是逐頂點運(yùn)行的程序旅敷,即每個頂點數(shù)據(jù)都會執(zhí)行一次生棍,且是并行的

操作

  • 確定頂點位置
  • 處理圖形頂點的變換(旋轉(zhuǎn)、平移扫皱、縮放)
  • 3D圖形數(shù)據(jù) 投影換算 為2D圖形數(shù)據(jù)

片元著色器

  • 片元:理解為屏幕中的像素點
  • 片元著色器主要用于處理一個個的像素點足绅,例如像素顏色的計算和填充
  • 逐像素且在GPU并行運(yùn)行的程序,即每個像素都會執(zhí)行一次

舉例說明:圖片飽和度是如何完成的韩脑?

  • 通過片元著色器進(jìn)行一個個像素點的修改來實現(xiàn)

GLSL(OpenGL Shading Language)

  • OpenGL中著色編程的語言
  • 開發(fā)者可以使用該語言氢妈,自定義著色器

光柵化

通過2個步驟產(chǎn)生片元的一個過程

具體描述

  • 頂點數(shù)據(jù)轉(zhuǎn)換為片元
  • 幾何圖元轉(zhuǎn)化為二維圖像
  • 把物體的數(shù)學(xué)描述和相關(guān)的顏色信息轉(zhuǎn)換為屏幕上對應(yīng)位置的像素及填充像素顏色
  • 將模擬信號轉(zhuǎn)換為離散信號
  • 是不可編程的過程

作用
將圖轉(zhuǎn)化為一個個柵格組成的圖像

特點
每個元素對應(yīng)幀緩沖區(qū)中的一像素

執(zhí)行的操作

  • 確定圖形的像素范圍
  • 顏色附著上去,即分配一個顏色值和一個深度值到各個區(qū)域

紋理

可以理解為圖片

目的

  • 渲染圖形時段多,可以使場景更加逼真

混合 Blending

可以理解為兩個圖形/圖像相交處的顏色首量,該顏色即為兩個圖形/圖像顏色的混合

變換矩陣 Transformation

用于圖形的平移、旋轉(zhuǎn)进苍、縮放時使用

投影矩陣 Projection

將3D坐標(biāo)轉(zhuǎn)換為2D屏幕坐標(biāo)時使用

渲染上屏/交換緩沖區(qū) SwapBuffer

  • 渲染緩沖區(qū):可以理解為是系統(tǒng)的資源加缘,例如窗口
  • 渲染上屏:將圖像直接渲染到窗口對應(yīng)的渲染緩沖區(qū)

問題:如果每個窗口只有一個緩沖區(qū),在繪制過程中刷新了屏幕觉啊,窗口可能顯示不出完整的圖像

  • 常規(guī)OpenGL程序中至少會有兩個緩沖區(qū)
    ==> 屏幕緩沖區(qū):用于顯示在屏幕上
    ==> 離屏緩沖區(qū):沒有顯示的
  • 在一個緩沖區(qū)渲染完成后拣宏,將屏幕緩沖區(qū)和離屏緩沖區(qū)進(jìn)行交換,實現(xiàn)圖像在屏幕上的顯示

問題:防止交換緩沖區(qū)時屏幕上下區(qū)域的圖像分屬于兩個不同的幀

  • 顯示的刷新一般是逐行進(jìn)行的杠人,因此交換一般會等待顯示器刷新完成的信號勋乾,在顯示器兩次刷新的間隔中進(jìn)行交換
    ==> 信號:垂直同步信號
    ==> 技術(shù):垂直同步技術(shù)

問題:使?用了了雙緩沖區(qū)和垂直同步技術(shù)之后,由于總是要等待緩沖區(qū)交換之后再進(jìn)行下一幀的渲染嗡善,使得幀率 無法完全達(dá)到硬件允許的最??平

三緩沖區(qū)技術(shù)

  • 在等待垂直同步時辑莫,來回交替渲染兩個離屏的緩沖區(qū)
  • 垂直同步發(fā)生時,屏幕緩沖區(qū)和最近渲染完成的離屏緩沖區(qū)交換
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末罩引,一起剝皮案震驚了整個濱河市各吨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袁铐,老刑警劉巖揭蜒,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件横浑,死亡現(xiàn)場離奇詭異,居然都是意外死亡忌锯,警方通過查閱死者的電腦和手機(jī)伪嫁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來偶垮,“玉大人,你說我怎么就攤上這事帝洪∷贫妫” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵葱峡,是天一觀的道長砚哗。 經(jīng)常有香客問我,道長砰奕,這世上最難降的妖魔是什么蛛芥? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮军援,結(jié)果婚禮上仅淑,老公的妹妹穿的比我還像新娘。我一直安慰自己胸哥,他們只是感情好涯竟,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著空厌,像睡著了一般庐船。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嘲更,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天筐钟,我揣著相機(jī)與錄音,去河邊找鬼赋朦。 笑死篓冲,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的北发。 我是一名探鬼主播纹因,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼琳拨!你這毒婦竟也來了瞭恰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤狱庇,失蹤者是張志新(化名)和其女友劉穎惊畏,沒想到半個月后恶耽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡颜启,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年偷俭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缰盏。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡涌萤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出口猜,到底是詐尸還是另有隱情负溪,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布济炎,位于F島的核電站川抡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏须尚。R本人自食惡果不足惜崖堤,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耐床。 院中可真熱鬧密幔,春花似錦、人聲如沸咙咽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钧敞。三九已至蜡豹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溉苛,已是汗流浹背镜廉。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留愚战,地道東北人娇唯。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像寂玲,于是被迫代替她去往敵國和親塔插。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359