OpenGL 名詞學習

常見的圖形API

  • OpenGL(Open Graphics Library)是一個跨編程語言捎谨、跨平臺的編程圖形程序接口,它將計算機的資源抽象成為一個個OpenGL的對象甥捺,對這些資源的操作抽象成為一個個的OpenGL指令

  • OpenCV(Open Source Computer Vision Library)OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺機器學習軟件庫兆衅,可以運行在Linux烛谊、WindowsAndroidMac OS操作系統(tǒng)上嘉汰。它輕量級而且高效——由一系列 C 函數(shù)和少量 C++ 類構(gòu)成丹禀,同時提供了Python、Ruby、MATLAB等語言的接口双泪,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法持搜。主要應(yīng)用于識別

  • OpenGL ES(OpenGL for Embedded Systems)是OpenGL三維圖形API的子集,針對手機焙矛、PDA(Personal Digital Assistant)和游戲主機等嵌入式設(shè)備而設(shè)計葫盼,去除了許多不必要和性能較低的API接口

  • DirectX是由很多API組成,DirectX并不是單純的圖形API村斟。DirectX是屬于Windows上的一個多媒體處理框架贫导,不支持Windows以外的平臺,不屬于跨平臺框架蟆盹。DirectX可分為四大部分:顯示部分孩灯、聲音部分、輸入部分和網(wǎng)絡(luò)部分

  • Metal是Apple為游戲開發(fā)者推出的新的平臺技術(shù)逾滥,Metal能夠為3D圖像提高10倍的渲染性能峰档。Metal是Apple為了解決3D渲染而推出的框架

圖形API對比理解

  • OpenGL VS OpenGL ES
    OpenGL:往往用于PC圖形圖像渲染處理
    OpenGL ES:移動端(安卓,iOS)
  • OpenGL VS OpenCV
    OpenGL:渲染(以位圖顯示)
    OpenCV:識別(人臉識別/身份識別/物體識別)
  • OpenGL ES VS Metal
    2018年之前Apple移動端的渲染(CoreAnimation)是基于OpenGL ES封裝的框架寨昙,2018開始底層的渲染遷移到Metal讥巡,目前Metal是無法完成跨平臺。對于Apple來說OpenGL ES是一個第三方框架舔哪,核心渲染處理肯定會被Metal逐步取代欢顷。Metal是調(diào)用GPU來進行運行(GPU并發(fā)運算,編碼解碼尸红,識別吱涉,大量并發(fā)運算,開發(fā)更多的自定義入口外里,更多的利用GPU)

OpenGL上下文(context)

  • 在應(yīng)用程序調(diào)用任何OpenGL的指令之前怎爵,需要安排首先創(chuàng)建一個OpenGL的context。這個context是一個非常龐大的狀態(tài)機盅蝗,保存了OpenGL的各種狀態(tài)鳖链,這也是OpenGL指令執(zhí)行的基礎(chǔ)
  • OpenGL的函數(shù)不管在哪個語言中,都是類似C語言一樣的面向過程函數(shù)墩莫,本事上都是對OpenGLcontext這個龐大的狀態(tài)機中的某個狀態(tài)或者對象進行操作芙委,你得首先把這個對象設(shè)置為當前對象。因此狂秦,通過對OpenGL指令的封裝灌侣,是可以將OpenGL的相關(guān)調(diào)用封裝成一個面向?qū)ο蟮膱D形API
  • 由于OpenGLcontext是一個巨大的狀態(tài)機,切換context往往會產(chǎn)生江大的開銷裂问,但是不同的繪制模板侧啼,可能需要使用完全的狀態(tài)管理牛柒。因此,可以在應(yīng)用程序中分別創(chuàng)建多個不同的context痊乾,在不同的線程中使用不同的context皮壁,context之間共享紋理、緩沖區(qū)等資源哪审。這樣的方案蛾魄,會比反復切換context,或者大量修改渲染狀態(tài)湿滓,更加合適高效滴须。

OpenGL狀態(tài)機

  • 狀態(tài)機理論上是一個機器。狀態(tài)機秒速了一個對象在其生命周期內(nèi)經(jīng)理的各種狀態(tài)茉稠,狀態(tài)的莊邊的動因描馅、條件及轉(zhuǎn)變中所執(zhí)行的活動。
    • 有記憶功能
    • 可以接受輸入而线,根據(jù)輸入的內(nèi)容和自己的原先狀態(tài)铭污,修改自己當前狀態(tài),并可以有對應(yīng)輸出
    • 當進入特殊狀態(tài)(停機)的時候膀篮,便不再接收輸入嘹狞,并停止工作

渲染

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

頂點數(shù)組和頂點緩沖區(qū)

  • VertexArrayVertexbuffer
    • 繪圖的時候需要先確定圖形顯示的區(qū)域,而確定這些區(qū)域所構(gòu)成的頂點數(shù)據(jù)集合在內(nèi)存中被稱為VertexArray誓竿。OpenGL中的圖像都是由土元組成磅网,在OpenGL ES中,有三種類型的圖元:筷屡、涧偷、三角形;
    • 高效的做法是我們可以提前分配一塊顯存將VertexArray傳入其中。這部分顯存我們稱為Vertexbuffer

位圖

  • JPG/PNG 都是壓縮圖片
  • 位圖是壓縮圖片解壓之后通過像素點顯示

管線

  • 在OpenGL下渲染圖形毙死,就會經(jīng)歷?個?個的節(jié)點燎潮。而這樣的操作可以理理解管線。管線是?個抽象的概念扼倘,之所以稱之為管線是因為顯卡在處理數(shù)據(jù)的時候是按照一個固定的順序來的确封,而且嚴格按照這個順序。
    • 固定管線:不可以進行自定義操作再菊,只能用現(xiàn)有的
    • 可編程管線:自定義造輪子

著色器

  • Shader給GPU使用的代碼段
    • 固定Shader:(存儲著色器)蘋果提供的API代碼段爪喘,調(diào)用參數(shù)OpenGL提供
    • 固定著色器:自定義代碼段(基于GLSL)
  • 可編輯著色器
    • 頂點著色器VertexShader
      • 確定位置
      • 縮放/平移/旋轉(zhuǎn)位置換算
      • 手機端顯示3D效果
    • 片元著色器片段著色器FragmentShader 像素著色器PixelShader
      • 處理一個一個的像素點,將一個個像素點映射到屏幕上

GLSL(OpenGL Shading Language)

  • 自定義著色器->代碼(語言)OpenGL標準調(diào)用GPU來做計算

光柵化(Rasterization)

  • Rasterization就是把頂點數(shù)據(jù)轉(zhuǎn)換為片元的過程纠拔。具有將圖轉(zhuǎn)化為?個個柵格組成的圖象 的作?秉剑,特點是每個元素對應(yīng)幀緩沖區(qū)中的?像素。
  • Rasterization其實是?種將?何圖元變?yōu)槎S圖像的過程稠诲。該過程包含了兩部分的?作秃症。
    • 第?部分工作:決定窗?坐標中的哪些整型柵格區(qū)域被基本圖元占?候址;
    • 第?部分?作:分配一個顏?值和?個深度值到各個區(qū)域
  • 把物體的數(shù)學描述以及與物體相關(guān)的顏色信息轉(zhuǎn)換為屏幕上用于對應(yīng)位置的像素及?于填充像素的顏?吕粹,這個過程稱為光柵化种柑。這是?個將模擬信號轉(zhuǎn)化為離散信號的過程。

紋理

  • 紋理可以理解為圖片匹耕。渲染圖形式需要在其編碼填充圖片聚请,為了是場景更加逼真,而這里使用的圖片稳其,就是常說的的紋理

混合(Blending)

  • 在測試階段之后驶赏,如果像素依然沒有被剔除,那么像素的顏?將會和幀緩沖區(qū)中顏?附著上的顏色進?混合既鞠,混合的算法可以通過OpenGL的函數(shù)進行指定煤傍。但是OpenGL提供的混合算法有限。如果需要更加復雜的混合算法嘱蛋,一般可以通過片段著?器進?實現(xiàn)蚯姆,當然性能會?原?的混合算法差?些。(像素疊加的算法)

變幻矩陣(Transformation)

  • 圖形僅為位置變幻(平移洒敏、縮放龄恋、旋轉(zhuǎn))需要使用Transformation

投影矩陣(Prejection)

  • 用于將3D坐標轉(zhuǎn)換成為二維屏幕坐標,實際線條也將在二維坐標下進行繪制
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凶伙,一起剝皮案震驚了整個濱河市郭毕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌函荣,老刑警劉巖显押,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異傻挂,居然都是意外死亡乘碑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門踊谋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝉仇,“玉大人,你說我怎么就攤上這事殖蚕〗蜗危” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵睦疫,是天一觀的道長害驹。 經(jīng)常有香客問我,道長蛤育,這世上最難降的妖魔是什么宛官? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任葫松,我火速辦了婚禮,結(jié)果婚禮上底洗,老公的妹妹穿的比我還像新娘腋么。我一直安慰自己,他們只是感情好亥揖,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布珊擂。 她就那樣靜靜地躺著,像睡著了一般费变。 火紅的嫁衣襯著肌膚如雪摧扇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天挚歧,我揣著相機與錄音扛稽,去河邊找鬼。 笑死滑负,一個胖子當著我的面吹牛在张,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播橙困,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瞧掺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了凡傅?” 一聲冷哼從身側(cè)響起辟狈,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎夏跷,沒想到半個月后哼转,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡槽华,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年壹蔓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猫态。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡佣蓉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出亲雪,到底是詐尸還是另有隱情勇凭,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布义辕,位于F島的核電站虾标,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏灌砖。R本人自食惡果不足惜璧函,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一傀蚌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蘸吓,春花似錦善炫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至制跟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酱虎,已是汗流浹背雨膨。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留读串,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像派继,于是被迫代替她去往敵國和親惊楼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355