OpenglES筆記一

????????學(xué)習(xí)OpenglES大概一個(gè)月的時(shí)間了,現(xiàn)在回頭復(fù)習(xí)下迅腔,順便寫(xiě)點(diǎn)東西整理下知識(shí)霜浴。剛開(kāi)始學(xué)的時(shí)候一頭霧水,磕磕絆絆將就學(xué)下來(lái)恭应,學(xué)OpenglES最重要的就是對(duì)概念和流程的理解了抄邀,要是直接拿代碼去學(xué),根本啥都看不懂昼榛。對(duì)于第二遍的學(xué)習(xí)境肾,記錄下自己的理解,方便大家交流和自己理解胆屿。

簡(jiǎn)介

????????簡(jiǎn)介這不多寫(xiě)了奥喻,百度好多,簡(jiǎn)單的來(lái)說(shuō)Opengl是一種跨平臺(tái)的編程語(yǔ)言非迹』防穑可以對(duì)圖形硬件設(shè)備訪問(wèn)的軟件庫(kù),顯卡基本都支持Opengl憎兽,可能有些版本的不同冷离。OpenglES是針對(duì)移動(dòng)設(shè)備,手機(jī)游戲機(jī)等。OpenglES可以用于繪制3D圖形,提高渲染效率,圖像的處理黑毅。

CPU和GPU

????????OpenglES主要通過(guò)GPU繪制圖形愿卒,下面是CPU和GPU的架構(gòu)圖易结,綠色的為運(yùn)算單元搞动,黃色為控制單元飞主,紅色是緩存碾篡。

????????CPU和GPU它們分別針對(duì)了兩種不同的應(yīng)用場(chǎng)景穆律。CPU需要很強(qiáng)的通用性來(lái)處理各種不同的數(shù)據(jù)類型峦耘,同時(shí)又要邏輯判斷又會(huì)引入大量的分支跳轉(zhuǎn)和中斷的處理剔蹋。這些都使得CPU的內(nèi)部結(jié)構(gòu)異常復(fù)雜。而GPU面對(duì)的則是類型高度統(tǒng)一的辅髓、相互無(wú)依賴的大規(guī)模數(shù)據(jù)和不需要被打斷的純凈的計(jì)算環(huán)境泣崩。

????????GPU采用了數(shù)量眾多的計(jì)算單元和超長(zhǎng)的流水線,但只有非常簡(jiǎn)單的控制邏輯并省去了Cache洛口。而CPU不僅被Cache占據(jù)了大量空間矫付,而且還有有復(fù)雜的控制邏輯和諸多優(yōu)化電路,相比之下計(jì)算能力只是CPU很小的一部分

opengl的渲染流程

? ? ? ? 這里不具體寫(xiě)OpenglES如何編寫(xiě)第焰,先介紹大體的流程和用處买优,OpenglES目前分為三個(gè)版本,OpenglES1.0(固定管線)挺举,2.0(可編程管線)杀赢,3.0(在2.0的基礎(chǔ)上擴(kuò)展),這里我用的是2.0湘纵。

????????圖形渲染的基本單位就是點(diǎn)葵陵,兩個(gè)點(diǎn)之間用點(diǎn)渲染成線,三個(gè)點(diǎn)之間渲染成面瞻佛,一個(gè)面就是由一個(gè)或多個(gè)三角形組成,3D物體就是由許許多多的三角形拼接而成娇钱。渲染完圖形的框架后伤柄,可以在每個(gè)點(diǎn)上添加顏色,或者加上圖片對(duì)應(yīng)點(diǎn)的顏色文搂,看起來(lái)就是一個(gè)完整的物體了适刀。在繪制時(shí),簡(jiǎn)單的圖形我們可以自己定義煤蹭,復(fù)雜的需要用工具導(dǎo)出數(shù)據(jù)笔喉,這些數(shù)據(jù)包括頂點(diǎn)信息、紋理信息硝皂、法線信息常挚,這里的法線是用來(lái)做光照效果的,就算漫反射也是由無(wú)數(shù)個(gè)鏡面反射組成的稽物,法線就是用來(lái)計(jì)算反射角奄毡,這樣的計(jì)算是由系統(tǒng)來(lái)做的。

????????關(guān)于3D贝或,我們的手機(jī)是一個(gè)平面吼过,所看的3D效果是由數(shù)據(jù)經(jīng)過(guò)一系列的矩陣變換锐秦,投影到平面上展示的。移動(dòng)盗忱、平移酱床、縮放,矩陣的變換是不可缺少的趟佃。

? ? ? ? 圖像頂點(diǎn)數(shù)據(jù)到顯示結(jié)果有幾個(gè)大體的過(guò)程

頂點(diǎn)數(shù)據(jù):buffer是放置數(shù)據(jù)的地方扇谣,老外起的名字

頂點(diǎn)著色器:頂點(diǎn)數(shù)據(jù)傳遞給著色器,著色器通過(guò)glsl對(duì)頂點(diǎn)進(jìn)行編輯

頂點(diǎn)變換:頂點(diǎn)數(shù)據(jù)有時(shí)需要矩陣變換

圖元裝配:頂點(diǎn)信息根據(jù)畫(huà)圖的需要揖闸,將一些點(diǎn)連接起來(lái)

光柵化:連接頂點(diǎn)的線段上用點(diǎn)拼接起來(lái)揍堕,三角形填充也用點(diǎn)

片元著色器:將所有的點(diǎn)通過(guò)片元著色器填充顏色或紋理圖片

運(yùn)用到的一些知識(shí)

? ? ? ? 學(xué)了一個(gè)月感覺(jué)大體的流程還是比較清楚地,像大多數(shù)的程序語(yǔ)言一樣汤纸,語(yǔ)法不是重點(diǎn)衩茸,想要繪制好看的東西,還是要靠自己的思考和勤加練習(xí)贮泞。

? ? ? ? glsl(Opengl shading language?)著色器語(yǔ)言楞慈,在工程里單獨(dú)建立的一個(gè)文件,通過(guò)程序加載到opengl的執(zhí)行程序里啃擦,分頂點(diǎn)著色器和片元著色器囊蓝,可以操作片元的位置和顏色,大多數(shù)情況下都要依靠這兩個(gè)文件令蛉,通過(guò)變量傳遞給著色器聚霜,在里面編寫(xiě)位置的變化,矩陣相稱珠叔,紋理取值等蝎宇。

坐標(biāo)系,物體坐標(biāo)系:起初的坐標(biāo)系和世界坐標(biāo)系是重疊的祷安,物體移動(dòng)后坐標(biāo)系原點(diǎn)也會(huì)跟著移動(dòng)姥芥。

????????????????慣性坐標(biāo)系:物體坐標(biāo)系原點(diǎn)起,坐標(biāo)軸平行于世界坐標(biāo)系汇鞭。

????????????????世界坐標(biāo)系:在空間中建立起的坐標(biāo)系凉唐,默認(rèn)原點(diǎn)在屏幕的正中央,x軸向右霍骄,y向上台囱,z向屏幕外。

????????????????觀察者坐標(biāo)系:原點(diǎn)起腕巡,x軸和y軸和世界坐標(biāo)系一致玄坦,z軸相反(向屏幕里面)。FOV是視角的大小,NEAR PLANE是近平面煎楣,F(xiàn)AR PLANE是遠(yuǎn)平面豺总,物體只有在兩個(gè)平面之間的椎體內(nèi),才能被看見(jiàn)择懂。

向量和矩陣喻喳,在opengl中向量都是列向量(向量的書(shū)寫(xiě)都是從上往下),所以我們會(huì)看到在著色器中會(huì)用矩陣乘以向量困曙,如果反過(guò)來(lái)向量乘以矩陣表伦,是沒(méi)有意義的。在文章中我們看到的向量橫著寫(xiě)慷丽,是為了方便書(shū)寫(xiě)蹦哼。矩陣也是特殊的向量,如果我們把一個(gè)矩陣的每一行看成一個(gè)向量

1要糊,0纲熏,0 ? ? ? ?x軸

0,1锄俄,0 ? ? ? ?y軸

0局劲,0,1 ? ? ? ?z軸?

那么這個(gè)矩陣三個(gè)向量組成的也就是(1奶赠,1鱼填,1),矩陣和向量的相乘其實(shí)也可以看成在每個(gè)軸縮放的倍數(shù)(這只是矩陣為對(duì)角線的)毅戈,如果需要旋轉(zhuǎn)苹丸,會(huì)用到cos和sin,具體的計(jì)算我不寫(xiě)了苇经,腦補(bǔ)下圍繞某個(gè)軸旋轉(zhuǎn)后谈跛,每個(gè)向量的取值和角度的關(guān)系,不太難塑陵。

再說(shuō)一個(gè)四維向量,我們繪制的是3D物體蜡励,只有三個(gè)軸令花,opengl中的四維向量很多,我們上面講到凉倚,三階矩陣和向量相乘兼都,只能旋轉(zhuǎn)縮放,如果移動(dòng)嗯稽寒,這是時(shí)候就需要再加一個(gè)w(x扮碧,y,z,w)慎王,向量的w默認(rèn)為1蚓土,這樣矩陣就可以把移動(dòng)的距離放在第四個(gè)w中,來(lái)舉個(gè)例子赖淤,x軸移動(dòng)1蜀漆,y軸移動(dòng)2,z軸移動(dòng)3咱旱,那么矩陣就是

1确丢,0,0吐限,1?

0鲜侥,1,0诸典,2

0描函,0,1搂赋,3

0赘阀,0,0脑奠,1


向量的叉乘基公,同時(shí)垂直兩個(gè)向量的向量,即c垂直于a宋欺,同時(shí)c垂直于b(a與c的夾角為90°轰豆,b與c的夾角為90°)

c =? a×b = (a.y*b.z-b.y*a.z , b.x*a.z-a.x*b.z? , a.x*b.y-b.x*a.y)

向量點(diǎn)乘,是一個(gè)向量和它在另一個(gè)向量上的投影的長(zhǎng)度的乘積齿诞;是標(biāo)量酸休。

a?*?b?= |a| * |b| * cosθ?????????????|a|為向量長(zhǎng)度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市祷杈,隨后出現(xiàn)的幾起案子斑司,更是在濱河造成了極大的恐慌,老刑警劉巖但汞,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宿刮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡私蕾,警方通過(guò)查閱死者的電腦和手機(jī)僵缺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)踩叭,“玉大人磕潮,你說(shuō)我怎么就攤上這事翠胰。” “怎么了自脯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵之景,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我冤今,道長(zhǎng)闺兢,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任戏罢,我火速辦了婚禮屋谭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘龟糕。我一直安慰自己桐磁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布讲岁。 她就那樣靜靜地躺著我擂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缓艳。 梳的紋絲不亂的頭發(fā)上校摩,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音阶淘,去河邊找鬼衙吩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛溪窒,可吹牛的內(nèi)容都是我干的坤塞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼澈蚌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼摹芙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宛瞄,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤浮禾,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后份汗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體伐厌,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年裸影,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片军熏。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轩猩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情均践,我是刑警寧澤晤锹,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站彤委,受9級(jí)特大地震影響鞭铆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜焦影,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一车遂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斯辰,春花似錦舶担、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至闸氮,卻和暖如春剪况,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒲跨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工译断, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人财骨。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓镐作,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親隆箩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子该贾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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