成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenGL ES 2.0簡(jiǎn)單介紹

移動(dòng)開發(fā) 移動(dòng)應(yīng)用
OpenGL ES 和 OpenGL 一樣,是 khronos 所維護(hù)、定義的免授權(quán)費(fèi)、跨平臺(tái)的 3D Graphics API,不過和 OpenGL 不同的是,OpenGL ES 主要是針對(duì)嵌入式系統(tǒng)(embedded system)的環(huán)境(像是手機(jī)、PDA);而近年來網(wǎng)頁(yè)上的多媒體技術(shù)越來越複雜、多樣化,也漸漸地需要用到 3D Graphics 的硬體加速,所以也出現(xiàn)了基于 OpenGL ES 2.0 而發(fā)展、直接在網(wǎng)頁(yè)上做 3D 顯示的 WebGL。

OpenGL ES 和 OpenGL 一樣,是 khronos 所維護(hù)、定義的免授權(quán)費(fèi)、跨平臺(tái)的 3D Graphics API,不過和 OpenGL 不同的是,OpenGL ES 主要是針對(duì)嵌入式系統(tǒng)(embedded system)的環(huán)境(像是手機(jī)、PDA).

而近年來網(wǎng)頁(yè)上的多媒體技術(shù)越來越複雜、多樣化,也漸漸地需要用到 3D Graphics 的硬體加速,所以也出現(xiàn)了基于 OpenGL ES 2.0 而發(fā)展、直接在網(wǎng)頁(yè)上做 3D 顯示的 WebGL

也由于 OpenGL ES 所針對(duì)的環(huán)境一般來說效能都較差、有支援的功能也較少,所以O(shè)penGL ES 的技術(shù)方面的進(jìn)展會(huì)比 OpenGL 來的慢、而且也有較多的限制。

目前 OpenGL ES 有兩個(gè)大版本,一個(gè)是基于 OpenGL 1.3 / 1.5、使用「fixed function pipeline」的 1.0 / 1.1,另一個(gè)則是基于 OpenGL 2.0、使用「programmable pipeline」的 2.x。兩者***的差別,就在于 OpenGL ES 2.0 移除了 fixed function pipeline 的功能,而要使用透過 vertex / fragment shader 來實(shí)作的 programmable pipeline。

opengles_1x_pipeline

 opengles_20_pipeline_thumb[6]

上面兩張圖取自 OpenGL ES 網(wǎng)站的 fixed function pipeline 和 programmable pipeline 的流程圖。以這兩張流程圖,應(yīng)該可以清楚地發(fā)現(xiàn):vertex shader 就是對(duì)應(yīng)到本來的 transform 和 (pre-vertex) lighting 的部分,fragment shader 則是對(duì)應(yīng)到 texture、colour sum、fog、alpha test 等功能;也就是說,這些(橘色的部分)本來在 fixed function pipeline 時(shí)會(huì)由系統(tǒng)做掉的計(jì)算,現(xiàn)在在 programmable pipeline 都要自己寫 shader 程式來做計(jì)算了。

這樣的好處,是 render 的方法可以變得相當(dāng)?shù)赜袕椥裕淌介_發(fā)者可以根據(jù)自己的需求,來調(diào)整這兩大塊的計(jì)算方法,來達(dá)到自己需要的功能;但是相對(duì)的缺點(diǎn)就是,就算是最簡(jiǎn)單的程式,都還是需要自己編寫 shader 程式,某種程度上也提高了入門的門檻。

而另外和傳統(tǒng) OpenGL 在開發(fā)上差異較大的部分,包括了:

在 OpenGL ES 2.0 裡也沒有 OpenGL 的 matrix stack,程式開發(fā)者必須要自行計(jì)算投影矩陣以及各物件的 transform matrix,再傳到 shader 裡做計(jì)算;雖然在 GPU 端的程式是有矩陣計(jì)算的功能,但是在 CPU 端就需要自己實(shí)作矩陣計(jì)算的基本演算法了。

在 OpenGL ES 裡沒有 glBegin() / glEnd() 這種 immediate mode 的函式,vertex 資料必須用 buffer object 或 vertex array 來處理。

取消了 GL_QUADS / GL_POLYGONS 這兩種 primitive 類型。

vertex 的所有資訊(包含本身的位置、顏色、normal 等等)都變成以抽象的 vertex attrib 來處理,需要自行定義并在 vertex shader 裡計(jì)算。

Lighting、material 也都是以抽象的形式,以 uniform 變數(shù)形式傳進(jìn) shader 并自行計(jì)算。

這些只是一些比較大的差異,其他還有一些地方也都不一樣,就不在這邊列舉了。而實(shí)際上,以這些部份來看,OpenGL ES 2.0 在概念上與其說是接近 OpenGL 2.0,其實(shí)更接近 OpenGL 3.x 的 Core profile 了∼所以基本上以 OpenGL 3.0 的概念來寫 OpenGL ES 2.0 的程式,應(yīng)該會(huì)更為適合;只是 OpenGL ES 2.0 的功能又比 OpenGL 3.x 少了些就是了。

 

責(zé)任編輯:閆佳明 來源: blog.chinaunix
相關(guān)推薦

2014-04-29 14:16:54

2014-04-24 13:35:11

OpenGL ES2.iOSAndroid

2010-02-14 15:27:25

2014-04-29 14:27:59

OpenGL ES 2Android繪制紋理

2014-04-24 13:26:24

OpenGL ES2.iOSiPhone

2014-04-24 14:00:35

OpenGL ES 2編程

2013-04-26 10:26:08

2014-04-29 14:49:37

OpenGL ES 2Android應(yīng)用投影

2013-09-02 15:46:06

OpenGLWindows

2013-07-25 09:32:26

OpenGL ESAndroid4.3

2014-04-29 14:05:02

OpenGL ESAndroid添加動(dòng)作

2017-07-19 15:25:16

iOS開發(fā)ARKitOpen GL

2017-07-04 12:26:14

ARARKit

2011-01-21 10:40:52

Sendmail

2009-06-17 17:59:01

介紹Spring

2011-02-24 14:40:47

Proftpd

2011-01-21 16:49:15

Zimbra

2011-02-23 13:28:12

2011-03-04 13:19:09

VSFTP介紹

2011-04-01 09:39:17

zabbix
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 免费在线观看成人 | 久久综合狠狠综合久久 | 玖玖视频网 | 久久专区| 国产激情视频在线 | 国产精品成人国产乱 | 亚洲高清视频在线观看 | 日本久久黄色 | 日本一区二区三区在线观看 | 一区二区视频在线 | 国产精品91久久久久久 | 夜夜草导航 | 午夜影院普通用户体验区 | 99久久精品免费视频 | 亚洲欧洲激情 | 少妇一级淫片免费播放 | 国产探花在线观看视频 | 久草在线在线精品观看 | 天堂素人约啪 | 一级片免费在线观看 | 亚洲精品一区二区三区蜜桃久 | 欧美乱码精品一区二区三区 | 日本午夜在线视频 | 日韩电影中文字幕在线观看 | 国产免费播放视频 | 亚洲第一av网站 | 一区二区三区四区国产 | 奇米久久 | 成人免费视频在线观看 | 久久久精品视频免费看 | 亚洲一区二区三区在线观看免费 | 精品久久久久久亚洲精品 | 成人av资源在线 | 久久综合av | 日韩在线观看一区二区三区 | 91成人免费看 | 成人在线观看免费 | 欧美日韩视频 | 国产精品一区2区 | 涩爱av一区二区三区 | 国产 欧美 日韩 一区 |