從零開始學(xué)OpenGL ES(一)圖形專有名詞與坐標(biāo)解析

圖形API簡(jiǎn)介

·OpenGL(Open Graphics Library)是一個(gè)跨編程語(yǔ)言瞒滴、跨平臺(tái)的編程圖形程序接口,它將計(jì)算機(jī)的資源抽象成為一個(gè)個(gè)OpenGL對(duì)象赞警,對(duì)這些資源的操作抽象成為一個(gè)個(gè)的OpenGL指令妓忍。

·OpenGL ES(OpenGL for Embedded Systems)是OpenGL三維圖形API的子集,針對(duì)手機(jī)愧旦、PDA和游戲主機(jī)等嵌入式設(shè)備而設(shè)計(jì)世剖,去除了許多不必要和性能較低的API接口。

·DirectX是由很多API組成的笤虫,DirectX并不是一個(gè)單純的圖形API搁廓,最重要的是DirectX是屬于Windows上的一個(gè)多媒體處理API引颈,并支持Windows以外的平臺(tái),所以不是跨平臺(tái)框架境蜕,按照性質(zhì)分類蝙场,可以分為四大部分,顯示部分粱年、聲音部分售滤、輸入部分、網(wǎng)絡(luò)部份

圖形API目的是解決什么問題

A 游戲開發(fā)中台诗,對(duì)于游戲場(chǎng)景/人物的渲染

B 音視頻開發(fā)中完箩,對(duì)于視頻解碼后的數(shù)據(jù)渲染

C 地圖引擎,對(duì)于地圖上的數(shù)據(jù)渲染

D 動(dòng)畫中拉队,實(shí)現(xiàn)動(dòng)畫繪制

E 視頻處理中弊知,對(duì)于視頻加上濾鏡效果

本質(zhì)上是利用GPU芯片來(lái)高效渲染圖形圖像

OpenGL專業(yè)名詞解析

1、OpenGL上下文【context】

·在調(diào)用OpenGL指令之前粱快,需要首先創(chuàng)建一個(gè)OpenGL的上下文秩彤,這個(gè)上下文是一個(gè)龐大的狀態(tài)機(jī),保存了OpenGL的各種狀態(tài)事哭,也是指令執(zhí)行的基礎(chǔ)漫雷;

·OpenGL是類似C語(yǔ)言一樣的面向過程的函數(shù),本質(zhì)上實(shí)對(duì)上下文中的某個(gè)狀態(tài)或者對(duì)象進(jìn)行操作鳍咱。

·切換上下文會(huì)產(chǎn)生巨大的開銷降盹,因此可以在應(yīng)用程序中分別創(chuàng)建多個(gè)不同的上下文,在不同線程中使用不同的上下文谤辜,上下文之間共享紋理蓄坏、緩沖區(qū)等資源。

2丑念、OpenGL狀態(tài)機(jī)

狀態(tài)機(jī)描述了一個(gè)對(duì)象在其生命周期內(nèi)所經(jīng)歷的各種狀態(tài)剑辫,狀態(tài)間的轉(zhuǎn)變,發(fā)生轉(zhuǎn)變的動(dòng)因渠欺,條件以及轉(zhuǎn)變中所執(zhí)行的活動(dòng)妹蔽。狀態(tài)機(jī)是一種行為,說(shuō)明對(duì)象在其生命周期中響應(yīng)事件所經(jīng)歷的狀態(tài)序列以及對(duì)那些狀態(tài)事件的響應(yīng)挠将。

特點(diǎn):

(1)有記憶功能胳岂,能記住其當(dāng)前的狀態(tài)

(2)可以接受輸入,根據(jù)輸入的內(nèi)容和自己的原先狀態(tài)舔稀,修改自己當(dāng)前狀態(tài)乳丰,并且可以有對(duì)應(yīng)輸出

(3)當(dāng)進(jìn)入特殊狀態(tài)(停機(jī)狀態(tài))的時(shí)候,便不再接受輸入内贮,停止工作产园;

3汞斧、渲染 Rendering

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

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

OpenGL中的圖像都是由圖元構(gòu)成的什燕,在OpenGL ES中有3種類型的圖元:點(diǎn)粘勒、線、三角形屎即。頂點(diǎn)數(shù)據(jù)存儲(chǔ)在內(nèi)存種庙睡,調(diào)用繪制方法時(shí)直接由內(nèi)存?zhèn)魅腠旤c(diǎn)數(shù)組,性能更高的做法是提前分配一塊顯存技俐,將頂點(diǎn)數(shù)據(jù)預(yù)先傳入顯存中乘陪,這部分顯存被稱為頂點(diǎn)緩沖區(qū)。

5雕擂、管線

渲染圖形經(jīng)歷的一個(gè)一個(gè)節(jié)點(diǎn)啡邑,可以理解成流水線

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

封裝了很多種著色器程序塊內(nèi)置的一段包含了光照井赌、坐標(biāo)變換谤逼、裁剪等功能的固定shader程序來(lái)完成。

7族展、著色器程序shader

將固定渲染管線架構(gòu)變成了可編程渲染管線,OpenGL在實(shí)際調(diào)用繪制函數(shù)之前還需要指定一個(gè)由shader編譯成的著色器程序拔鹰,常見的著色器主要有頂點(diǎn)著色器(VertexShader)仪缸,片段著色器(FragmentShader)/像素著色器(PixelShader),幾何著色器(GeometryShader)列肢,曲面細(xì)分著色器(TessellationShader)恰画。在OpenGL進(jìn)行繪制的時(shí)候,首先由頂點(diǎn)著色器對(duì)傳入的頂點(diǎn)數(shù)據(jù)進(jìn)行運(yùn)算瓷马,再通過圖元裝配拴还,將頂點(diǎn)轉(zhuǎn)換為圖元,然后進(jìn)行光柵化欧聘,將圖元這種矢量圖形轉(zhuǎn)換為柵格化數(shù)據(jù)片林,最后,將柵格化數(shù)據(jù)傳入片段著色器中進(jìn)行運(yùn)算怀骤,片段著色器會(huì)對(duì)柵格化數(shù)據(jù)中的每一個(gè)像素進(jìn)行運(yùn)算费封,并決定像素的顏色。

8蒋伦、頂點(diǎn)著色器VertexShader

每個(gè)頂點(diǎn)都會(huì)執(zhí)行一次頂點(diǎn)著色器弓摘,這個(gè)過程是并行的,并且頂點(diǎn)著色器運(yùn)算過程中無(wú)法訪問其他頂點(diǎn)的數(shù)據(jù)

9痕届、片元著色器FragmentShader

一般用來(lái)處理圖形中每個(gè)像素點(diǎn)顏色計(jì)算和填充韧献,每個(gè)像素都會(huì)并行進(jìn)行一次片元著色器

10末患、GLSL【OpenGL Shading Language】

OpenGL著色語(yǔ)言,在圖形卡的GPU上執(zhí)行的锤窑,代替了固定的渲染管線的一部分璧针,使渲染管線中不同層次具有可編程性

11、光柵化Rasterization

把頂點(diǎn)數(shù)據(jù)轉(zhuǎn)換為片元的過程果复,具有將圖轉(zhuǎn)換為一個(gè)個(gè)柵格組成的圖像的作用陈莽,特點(diǎn)是每個(gè)元素對(duì)應(yīng)幀緩沖區(qū)中的一個(gè)像素,將幾何圖元轉(zhuǎn)變?yōu)槎S圖像的過程虽抄,包含兩部份工作:(1)決定窗口坐標(biāo)中的哪些整形柵格區(qū)域被基本圖元占用走搁;(2)分配一個(gè)顏色值和一個(gè)深度值到各個(gè)區(qū)域,光柵化過程產(chǎn)生的是片元

12迈窟、紋理

可以理解為圖片

13私植、混合Blending

在測(cè)試階段之后,如果像素依然沒有被剔除车酣,那么像素的顏色將會(huì)和幀緩和區(qū)中顏色附著上的顏色進(jìn)行混合曲稼。

14、變換矩陣Transformation

用于平移湖员、縮放贫悄、旋轉(zhuǎn)變換

15、投影矩陣Projection

用于將3D坐標(biāo)轉(zhuǎn)換為二維屏幕坐標(biāo)

16娘摔、渲染上屏/交換緩沖區(qū)SwapBuffer

OpenGL程序至少有兩個(gè)緩沖區(qū)窄坦,顯示在屏幕上的稱為屏幕緩沖區(qū),沒有顯示的稱為離屏緩沖區(qū)凳寺,由于顯示器的刷新一般是逐行進(jìn)行的鸭津,因此為了防止交換緩沖區(qū)的時(shí)候屏幕上下區(qū)域的圖像分屬于兩個(gè)不同的幀,因此交換一般會(huì)等待顯示器刷新完成的信號(hào)肠缨,在顯示器兩次刷新的間隔中進(jìn)行交換逆趋,這個(gè)信號(hào)被稱為垂直同步信號(hào)

17、投影方式

透視投影 物體遠(yuǎn)小近大更加有空間感

正交投影 物體不會(huì)隨距離視點(diǎn)遠(yuǎn)近發(fā)生大小變化

18晒奕、OpenGL坐標(biāo)系

OpenGL中坐標(biāo)系都屬于右手坐標(biāo)系闻书,而規(guī)范化設(shè)備坐標(biāo)系使用左手坐標(biāo)系,籠統(tǒng)說(shuō)OpenGL使用右手坐標(biāo)系是不合適的脑慧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惠窄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子漾橙,更是在濱河造成了極大的恐慌杆融,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霜运,死亡現(xiàn)場(chǎng)離奇詭異脾歇,居然都是意外死亡蒋腮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門藕各,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)池摧,“玉大人,你說(shuō)我怎么就攤上這事激况∽魍” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵乌逐,是天一觀的道長(zhǎng)竭讳。 經(jīng)常有香客問我,道長(zhǎng)浙踢,這世上最難降的妖魔是什么绢慢? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮洛波,結(jié)果婚禮上胰舆,老公的妹妹穿的比我還像新娘。我一直安慰自己蹬挤,他們只是感情好缚窿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著焰扳,像睡著了一般倦零。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蓝翰,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天光绕,我揣著相機(jī)與錄音女嘲,去河邊找鬼畜份。 笑死,一個(gè)胖子當(dāng)著我的面吹牛欣尼,可吹牛的內(nèi)容都是我干的爆雹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼愕鼓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钙态!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起菇晃,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤册倒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后磺送,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驻子,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了叁温。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庄吼。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖域慷,靈堂內(nèi)的尸體忽然破棺而出荒辕,到底是詐尸還是另有隱情,我是刑警寧澤犹褒,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布抵窒,位于F島的核電站,受9級(jí)特大地震影響化漆,放射性物質(zhì)發(fā)生泄漏估脆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一座云、第九天 我趴在偏房一處隱蔽的房頂上張望疙赠。 院中可真熱鬧,春花似錦朦拖、人聲如沸圃阳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捍岳。三九已至,卻和暖如春睬隶,著一層夾襖步出監(jiān)牢的瞬間锣夹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工苏潜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留银萍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓恤左,卻偏偏與公主長(zhǎng)得像贴唇,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子飞袋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

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