OpenGL 專業(yè)名詞解析

OpenGL (Open Graphics Library)

一個(gè)跨平臺編程語言慎式,跨平臺的編程圖形程序接口确虱,它將計(jì)算機(jī)的資源抽象為一個(gè)個(gè)OpenGL的對象抢韭,對這些資源的操作抽象為一個(gè)個(gè)的OpenGL指令

OpenGL ES (OpenGL for Embedded Systems)

OpenGL三維圖形AP的子集凳谦,針對手機(jī)念恍、PDA和游戲主機(jī)等嵌入式設(shè)備而設(shè)計(jì)驹尼,去除了許多不必要和性能較低的API接口趣避。

DirectX

由很多API組成的,DirectX并不是一個(gè)單純的圖形API.最重要的是DirectX是屬于windows上一個(gè)多媒體處理框架新翎,并不支持windows以外的平臺.所以不是跨平臺框架.按照性質(zhì)分類程帕,可以分為四大部分,顯示部分地啰、聲音部分愁拭、輸入部分和網(wǎng)絡(luò)部分.

Metal

Apple為游戲開發(fā)者推出了新的平臺技術(shù) Metal,該技術(shù)能夠?yàn)?D圖像提高10倍的渲染性能.Metal是Apple為了解決3D渲染而推出的框架

OpenGL與OpenGL ES的區(qū)別
  1. OpenGL 主要運(yùn)用于PC端的圖形圖像渲染處理(MAC,windows)
  2. OpenGL ES 主要運(yùn)用于移動(dòng)端(iOS,Android)
OpenGL與OpenCV的區(qū)別
  1. OpenGL主要用于渲染(顯示位圖)
  2. OpenCV主要用于識別(人臉識別、身份識別亏吝、物體—>OpenCV face++)與人工智能結(jié)合
OpenGL ES與Metal的區(qū)別
  1. Apple 至2018年渲染部分例如CoreAnimation是基于OpenGL ES封裝的上層框架岭埠,2018年后底層渲染遷移到了Metal
  2. OpenGL ES作為第三方庫沒法契合你項(xiàng)目定制化需求,沒法迭代
  3. 很多的項(xiàng)目目前還是使用的OpenGL ES (跨平臺蔚鸥,GLSL兼容iOS和Android)
  4. 替代原因:
    4.1 不可能一直把非常重要的渲染核心框架使用第三方
    4.2 調(diào)用GPU來進(jìn)行運(yùn)行(GPU并發(fā)運(yùn)算惜论,編碼解碼,識別止喷,大量并發(fā)運(yùn)算馆类,2018年開始通過Metal提供的接口,讓你調(diào)用GPU來自定義事情.借助Metal調(diào)度GPU來給你做運(yùn)算)

圖形API解決什么問題:--->渲染問題

  1. 系統(tǒng)針對按鈕启盛、圖片、視圖技羔、圖層渲染問題
  2. 游戲引擎->人物/場景渲染(圖形API)
  3. 視頻播放方框--->ijkplayer,kxmovie視頻解碼--->渲染(圖形API)
  4. 核心動(dòng)畫--->動(dòng)畫操作(旋轉(zhuǎn)僵闯、縮放、平移藤滥、圖層特效)
  5. 視頻/圖片--->特效(圖形API)
  6. 離屏渲染
OpenGL 01.png
OpenGL上下文[context]

在應(yīng)用程序調(diào)用任何OpenGL的指令之前鳖粟,需要安排首先創(chuàng)建一個(gè)OpenGL的上下文。這個(gè)上下文(環(huán)境)是一個(gè)非常龐大的狀態(tài)機(jī)拙绊,保存了OpenGL中的各種狀態(tài),這也是OpenGL指令執(zhí)行的基礎(chǔ)

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

類推到OpenGL中來向图,可以這么理解:
OpenGL可以記錄自己的狀態(tài)(如當(dāng)前所使用的顏色,是否開啟了混合功能等)
OpenGL可以接收輸入(當(dāng)調(diào)用OpenGL函數(shù)的時(shí)候标沪,實(shí)際上可以看成OpenGL在接收我們的輸入)榄攀,如果我們調(diào)用glColor3f,則OpenGL接收到這個(gè)輸入后會修改自己的"當(dāng)前顏色"這個(gè)狀態(tài)
OpenGL可以進(jìn)入停止?fàn)顟B(tài),不再接收輸入金句,在程序退出前檩赢,OpenGL總會先停止工作的

OpenGL 渲染

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

OpenGL 頂點(diǎn)數(shù)組(VertexArray)

將頂點(diǎn)數(shù)據(jù)存放在內(nèi)存中

OpenGL 頂點(diǎn)緩沖區(qū)(VertexBuffer)

將頂點(diǎn)數(shù)據(jù)存放到GPU的顯存中

png轉(zhuǎn)換為位圖(CoreGraphics)
位圖: 120*120 = 14400 -->RGBA --->14400 *4 = 位圖(紋理)
映射: 對應(yīng)關(guān)系

OpenGL 管線:流水線

//工廠:肥皂 --->肥皂水--->模具--->肥皂塊

固定管線

對應(yīng)非常多的模具(固定著色器)--->結(jié)果

可編程管線

肥皂--->肥皂水--->自定義編程模具(GLSL語法來驅(qū)使GPU來進(jìn)行代碼實(shí)現(xiàn))--->肥皂快(OpenGL ES GLSL)

著色器

函數(shù)/方法(代碼段)--->CPU來使用;shader(代碼段)--->GPU來使用

固定著色器(存儲著色器)

蘋果提供API(代碼段)--->調(diào)用(參數(shù))OpenGL來提供

自定義著色器

進(jìn)行自定義(自己基于GLSL來進(jìn)行編寫代碼段)

頂點(diǎn)著色器

用來處理頂點(diǎn)相關(guān)代碼 (1.確定位置 2. 縮放/平移/旋轉(zhuǎn)位置換算 3.手機(jī)端顯示3D 手機(jī)屏幕實(shí)際2D,3D圖形數(shù)據(jù)--->2D(投影換算)--->OpenGL ES)

片元著色器

片元(像素點(diǎn))著色器违寞,處理一個(gè)一個(gè)像素點(diǎn)贞瞒;120*120 像素點(diǎn).14400次 GPU并行運(yùn)算;(例如圖片進(jìn)行飽和度調(diào)整--->片元著色器進(jìn)行一個(gè)個(gè)像素點(diǎn)修改)--->OpenGL ES

GLSL(OpenGL Shading Language)

自定義著色器--->代碼(語言) OpenGL 標(biāo)準(zhǔn)調(diào)用GPU來做計(jì)算

光柵化(Rasterization不可編程)

是把頂點(diǎn)數(shù)據(jù)轉(zhuǎn)換為片元的過程偶房,具有將圖轉(zhuǎn)化為一個(gè)個(gè)柵格做成的圖像的作用,特點(diǎn)是每個(gè)元素對應(yīng)幀緩沖區(qū)中的一個(gè)像素军浆。
把物體的數(shù)學(xué)描述以及與物體相關(guān)的顏色信息轉(zhuǎn)換為屏幕上用于對應(yīng)位置的像素及用于填充像素的顏色棕洋,這個(gè)過程稱為光柵化
離屏渲染shouldRa--->觸發(fā)離屏渲染
第一個(gè)過程: 決定窗口坐標(biāo)中的哪些整型柵格區(qū)域被基本圖元占用
第二個(gè)過程: 分配一個(gè)顏色值和一個(gè)深度值到各個(gè)區(qū)域.、

OpenGL 02.png
紋理

紋理可以理解為圖片乒融,大家在渲染圖形時(shí)需要在其編碼填充圖片掰盘,為了使得場景更加逼真,而這里使用的圖片簇抵,就是常說的紋理庆杜,但是在OpenGL,我們更加習(xí)慣叫紋理,而不是圖片
壓縮圖片--->位圖 OpenGL .tga 紋理文件 OpenGL ES 移動(dòng)端顯示一張 png--->位圖

混合

Layer2個(gè)圖層--->粉紅色0.5碟摆,藍(lán)色0.2 = 疊加在一起 = 顏色混合行為--->離屏渲染 組透明度 --->OpenGL

變換矩陣(Transformation)

例如圖形想發(fā)生平移晃财、縮放、旋轉(zhuǎn)變換典蜕。就需要使用變換矩陣

投影矩陣(Projection)

用于將3D坐標(biāo)轉(zhuǎn)換為二維屏幕坐標(biāo)断盛,實(shí)際線條也將在二維坐標(biāo)下進(jìn)行繪制

投影方式(觀察者視角)

只有兩種
1.正投影(平行投影)圖片繪制不管遠(yuǎn)近1:1進(jìn)行繪制,顯示2D效果
2.透視投影 遠(yuǎn)小近大的效果愉舔,3D圖形

攝像機(jī)坐標(biāo)系

觀察者坐標(biāo)系

物體坐標(biāo)系

物體本身的坐標(biāo)系

世界坐標(biāo)系

所有的物體都在世界坐標(biāo)系范圍內(nèi)

坐標(biāo)變換全局圖
OpenGL 03.png
著色器的渲染流程
OpenGL 04.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钢猛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子轩缤,更是在濱河造成了極大的恐慌命迈,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件火的,死亡現(xiàn)場離奇詭異壶愤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)馏鹤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門征椒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人湃累,你說我怎么就攤上這事勃救。” “怎么了治力?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵蒙秒,是天一觀的道長。 經(jīng)常有香客問我宵统,道長税肪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮益兄,結(jié)果婚禮上锻梳,老公的妹妹穿的比我還像新娘。我一直安慰自己净捅,他們只是感情好疑枯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛔六,像睡著了一般荆永。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上国章,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天具钥,我揣著相機(jī)與錄音,去河邊找鬼液兽。 笑死骂删,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的四啰。 我是一名探鬼主播宁玫,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼柑晒!你這毒婦竟也來了欧瘪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤匙赞,失蹤者是張志新(化名)和其女友劉穎佛掖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涌庭,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芥被,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脾猛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撕彤。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鱼鸠,死狀恐怖猛拴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚀狰,我是刑警寧澤愉昆,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站麻蹋,受9級特大地震影響跛溉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一芳室、第九天 我趴在偏房一處隱蔽的房頂上張望专肪。 院中可真熱鬧,春花似錦堪侯、人聲如沸嚎尤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芽死。三九已至,卻和暖如春次洼,著一層夾襖步出監(jiān)牢的瞬間关贵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工卖毁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留揖曾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓势篡,卻偏偏與公主長得像翩肌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子禁悠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

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