OpenGL 名詞解釋

OpenGL 名詞解釋

OpenGL (Open Graphics Library) 是用于渲染2D 3D矢量圖形的跨語(yǔ)言 跨平臺(tái)的應(yīng)用程序編程接口(API)

OpenGL ES (OpenGL for Embedded Systems) 是OpenGL的子集 去掉了openGL 里面許多非絕對(duì)必要的特性 針對(duì)手機(jī) PDA 和游戲主機(jī)的嵌入式設(shè)備而設(shè)計(jì)的帽芽。

Metal WWDC2014年推出的新技術(shù) 能夠?yàn)?D圖像提高10倍的渲染性能

以上三個(gè)框架的本質(zhì)都是利用GPU芯片來(lái)高效渲染圖形和圖像 圖形接口是開(kāi)發(fā)者唯一能夠接近GPU的方式

OpenGL上下文(context)

在應(yīng)用程序調(diào)用任何openGL指令之前,首先得創(chuàng)建openGL的上下文 類似于我們使用對(duì)象(object) 之前得初始化 這個(gè)上下文是一個(gè)非常龐大的狀態(tài)機(jī) 保存了openGL中的各種狀態(tài)

OpenGL 的函數(shù) 本質(zhì)上都是對(duì)openGL上下文這個(gè)狀態(tài)機(jī)中的某個(gè)狀態(tài)或者對(duì)象進(jìn)行操作 對(duì)openGL指令的封裝 是可以將openGL的相關(guān)調(diào)用封裝成一個(gè)面向?qū)ο蟮腁PI

openGL上下文是一個(gè)巨大的狀態(tài)機(jī) 切換上下文一般會(huì)產(chǎn)生巨大的開(kāi)銷 但是繪制不同的模塊 可能會(huì)需要使用完全獨(dú)立的狀態(tài)管理 基于此 可以在程序中創(chuàng)建多個(gè)不同的上下文 在不同的線程中使用不同的上下文 不同的上下文之間可以共享紋理 緩沖區(qū)等資源 這種工作方式 會(huì)比反復(fù)切換上下文 或者大量修改渲染狀態(tài) 會(huì)更加的高效

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

描述了一個(gè)對(duì)象在他的生命周期內(nèi)經(jīng)歷的各種狀態(tài) 發(fā)送轉(zhuǎn)變的原因 狀態(tài)間的轉(zhuǎn)變 轉(zhuǎn)變的條件 轉(zhuǎn)變中執(zhí)行的活動(dòng) 湾蔓。具有以下的特點(diǎn)
有記憶功能 能記住當(dāng)前的狀態(tài)
可以接受輸入 根據(jù)輸入的內(nèi)容 和自己原來(lái)的狀態(tài) 來(lái)修改自己當(dāng)前的狀態(tài) 并且可以有對(duì)應(yīng)的輸出
當(dāng)前進(jìn)入特殊的狀態(tài)比如說(shuō)停機(jī)狀態(tài)的時(shí)候 就不再接受輸入 停止工作

渲染(Rendering).

將圖形/圖像數(shù)據(jù)轉(zhuǎn)換成3D空間圖像的操作叫做渲染

頂點(diǎn)數(shù)組(VertexArray)和頂點(diǎn)緩沖區(qū)VertexBuffer)

畫(huà)圖一般來(lái)說(shuō)先畫(huà)圖像的骨架 褐望,然后再往骨架里面填充顏色 OpenGL 也一樣 奋早。 頂點(diǎn) 數(shù)據(jù)就是圖像的骨架 OpenGL中的圖像是有圖元組成的 OpenGLES 有三種類型的圖元 :點(diǎn) 線 三角形 頂點(diǎn)數(shù)據(jù)可以存在內(nèi)存中 存在內(nèi)存的這部分?jǐn)?shù)據(jù)叫做頂點(diǎn)數(shù)組 更高效的辦法是預(yù)先傳入到顯存中 這部分顯存 就叫做頂點(diǎn)緩沖區(qū)

管線 OpenGL在渲染圖形的時(shí)候會(huì)經(jīng)歷一個(gè)一個(gè)的節(jié)點(diǎn) 就可以理解為流水線上的每一個(gè)步驟 就像流水線上做產(chǎn)品一樣 這個(gè)固定的順序是從開(kāi)始的第一步 第二步 一直到最后一步 順序不能亂

固定管線 存儲(chǔ)著色器

早期的OpenGL中 封裝了很多種著色器程序塊 這些固定的著色器(shader)程序來(lái)完成圖形的渲染 開(kāi)發(fā)者不需要關(guān)注底層實(shí)現(xiàn) 只需要傳入相應(yīng)的參數(shù)就可以了
但是隨著使用常用越來(lái)越豐富 固定管線或者存儲(chǔ)著色器已經(jīng)不能滿足需求 這時(shí)候就有一個(gè)步驟變成了可以自己自定義編程 就像iOS中一般不復(fù)雜的界面可以調(diào)用系統(tǒng)已有的控件 但是不規(guī)則的圖形 就需要開(kāi)發(fā)者自己繪制了

著色器程序

在固定渲染管線架構(gòu)變成了可編程渲染管線 OpenGL在調(diào)用繪制函數(shù)之前 需要指定著色器程序 常見(jiàn)的著色器有頂點(diǎn)著色器 片段著色器/像素著色器 幾何著色器 曲面細(xì)分著色器 到OpenGL3.0 還是只支持頂點(diǎn)著色器和片段著色器
OpenGL 處理著色器程序的時(shí)候 要通過(guò)編譯 鏈接等步驟 生成了著色器程序 步驟分為
1 頂點(diǎn)著色器對(duì)傳入的頂點(diǎn)數(shù)據(jù)進(jìn)行運(yùn)算
2 圖元裝配 頂點(diǎn)轉(zhuǎn)換成圖元
3 光柵化 將圖元這種矢量圖形 轉(zhuǎn)換成柵格化的數(shù)據(jù)
4 將柵格化的數(shù)據(jù) 傳入片段著色器中進(jìn)行運(yùn)算 片段著色器 對(duì)柵格化的數(shù)據(jù)中的每一個(gè)像素進(jìn)行計(jì)算 來(lái)決定像素的顏色

頂點(diǎn)著色器 vertexShader

一般來(lái)處理圖形的每個(gè)頂點(diǎn)的變化 旋轉(zhuǎn) 平移和投影等等
頂點(diǎn)著色器會(huì)對(duì)每個(gè)頂點(diǎn)數(shù)據(jù)都并行執(zhí)行一次 在運(yùn)算過(guò)程中無(wú)法訪 問(wèn)別的頂點(diǎn)的數(shù)據(jù)

片元著色器FragmentShader

一般來(lái)處理圖像中每個(gè)像素點(diǎn)的顏色計(jì)算和填充
對(duì)每一個(gè)像素點(diǎn) 一個(gè)一個(gè)的并行計(jì)算

GLSL OpenGL shading language

OpenGL 著色語(yǔ)言 開(kāi)發(fā)者自定義的程序 代替了固定的渲染管線的一部分
GLSL的著色器代碼包含頂點(diǎn)著色器和片段著色器兩個(gè)部分

光柵化 Rasterization

將頂點(diǎn)數(shù)據(jù) 轉(zhuǎn)換成片元的過(guò)程 具有將圖轉(zhuǎn)化為一個(gè)個(gè)柵格組成的圖象的作用兜粘,特點(diǎn)是每個(gè)元素對(duì)應(yīng)幀緩沖區(qū)中的一像素绞绒。
1 決定窗口坐標(biāo)中那些整形柵格區(qū)域被基本圖元占用
2 分配一個(gè)顏色值和深度值到各個(gè)區(qū)域

紋理

紋理可以理解為圖? ?家在渲染圖形時(shí)需要在其編碼填充圖?,為了使得 場(chǎng)景更加逼真.?而這里使用的圖?,就是常說(shuō)的紋理.但是在OpenGL,我們更加 習(xí)慣叫紋理,?不是圖?.

混合

在測(cè)試階段之后拦耐,如果像素依然沒(méi)有被剔除耕腾,那么像素的顏色將會(huì)和幀緩沖區(qū)中顏?附著上的顏色進(jìn)行混合

變換矩陣 Transformation

圖形的平移 縮放 旋轉(zhuǎn)變換 需要使用變換矩陣

投影矩陣 projection

用于將3D坐標(biāo)變成二維屏幕的坐標(biāo) 實(shí)際的線條也將在二維坐標(biāo)中進(jìn)行繪制

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

渲染緩沖區(qū) 一般映射的是系統(tǒng)的資源 比如窗口 將圖像直接渲染到窗口對(duì)應(yīng)的渲染緩沖區(qū) 可以將圖像顯示到屏幕
如果窗口只有一個(gè)緩沖區(qū) 在繪制的過(guò)程中 可能顯示不出完整的圖像
為了解決這個(gè)問(wèn)題 常規(guī)的OpenGL程序至少有兩個(gè)緩沖區(qū) 顯示在屏幕上的成為屏幕緩沖區(qū) 沒(méi)有顯示在屏幕上的稱為離屏緩沖區(qū) 一個(gè)緩沖區(qū)渲染完成后 將屏幕緩沖區(qū)和離屏緩沖區(qū)交換 來(lái)實(shí)現(xiàn)屏幕上的顯示

OpenGL 坐標(biāo)變換

物體坐標(biāo)/對(duì)象坐標(biāo)——>模型變換——>世界坐標(biāo)——>視變換——>觀察者坐標(biāo)/攝像機(jī)坐標(biāo)——>投影變換——>裁剪變換——>透視除法——>規(guī)范化設(shè)備坐標(biāo)——>視口變換——>屏幕坐標(biāo)

著色器渲染流程

頂點(diǎn)數(shù)據(jù)——>頂點(diǎn)著色器——>細(xì)分著色器——>幾何著色器——>圖元設(shè)置——>剪切——>光柵化——>片元著色器——>效果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市杀糯,隨后出現(xiàn)的幾起案子扫俺,更是在濱河造成了極大的恐慌,老刑警劉巖固翰,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狼纬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡骂际,警方通過(guò)查閱死者的電腦和手機(jī)疗琉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)歉铝,“玉大人盈简,你說(shuō)我怎么就攤上這事√荆” “怎么了柠贤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)类缤。 經(jīng)常有香客問(wèn)我臼勉,道長(zhǎng),這世上最難降的妖魔是什么餐弱? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任宴霸,我火速辦了婚禮,結(jié)果婚禮上膏蚓,老公的妹妹穿的比我還像新娘猖败。我一直安慰自己,他們只是感情好降允,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布恩闻。 她就那樣靜靜地躺著,像睡著了一般剧董。 火紅的嫁衣襯著肌膚如雪幢尚。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,713評(píng)論 1 312
  • 那天翅楼,我揣著相機(jī)與錄音尉剩,去河邊找鬼。 笑死毅臊,一個(gè)胖子當(dāng)著我的面吹牛理茎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼皂林,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼朗鸠!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起础倍,我...
    開(kāi)封第一講書(shū)人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤烛占,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后沟启,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體忆家,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年德迹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芽卿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胳搞,死狀恐怖蹬竖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情流酬,我是刑警寧澤币厕,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站芽腾,受9級(jí)特大地震影響旦装,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜摊滔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一阴绢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艰躺,春花似錦呻袭、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至页响,卻和暖如春篓足,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闰蚕。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工栈拖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人没陡。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓涩哟,卻偏偏與公主長(zhǎng)得像索赏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贴彼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361