當(dāng)前位置:首頁 > 電腦軟件 > 編程其它 > OpenGL ES 2.0庫

OpenGL ES 2.0庫

大?。?54K 語言:簡體中文 類別:編程其它
  • 類型:國產(chǎn)軟件
  • 授權(quán):免費(fèi)軟件
  • 更新:2023-10-29
  • 環(huán)境:Windows11,Windows10,Windows8,Windows7,WinXP
  • 本地下載
9.1
0% 0%

情介紹

OpenGL ES 2.0是OpenGL三維圖形API的子集,針對(duì)手機(jī)、PAD和游戲主機(jī)等嵌入式設(shè)備設(shè)計(jì),而小編帶來的OpenGL ES 2.0是其2.0版本,這一版本主要針對(duì)可編程管線硬件,參照OpenGL 2.0的規(guī)范定義的。OpenGL ES 2.0是一個(gè)定義了跨編程語言、跨平臺(tái)的編程接口的規(guī)格,用于三維圖像,也就是說小編帶來的這個(gè)東西其實(shí)并不是軟件,而是一個(gè)功能強(qiáng)大的方便調(diào)用的底層圖形庫。

OpenGL ES 2.0具有免費(fèi),跨平臺(tái)等特點(diǎn),功能完善的2D和3D圖形應(yīng)用程序接口API能夠針對(duì)多種嵌入式系統(tǒng)做出專門設(shè)計(jì),包括移動(dòng)電話、手持設(shè)備、家電設(shè)備等等如果用戶為一些手機(jī)、游戲機(jī)等嵌入式設(shè)備做開發(fā),那么這個(gè)OpenGL ES 2.0是必不可少的。

OpenGL ES 2.0

OpenGL ES 2.0支持平臺(tái)與機(jī)型

- 支持iPad, iPhone3GS 和后續(xù)版本,以及iPodTouch3代和后續(xù)版本。

- 支持Android平臺(tái)從Android 2.2版本開始。

- 支持Android NDK從Android 2.0版本開始。

- 支持BlackBerryPlayBook黑莓。

- 支持Pandora潘多拉控制臺(tái)的3D庫。

- 被WebGL支持:瀏覽器支持OpenGL

- 支持少數(shù)新款Nokia諾基亞手機(jī),比如N900上的Maemo和N8上的Symbian3塞班3系統(tǒng)。

- 支持多款三星手機(jī),包括Galaxy S和Wave。

- 使用開發(fā)插件可以支持Palm webOS。

- 支持Archos 愛可視上網(wǎng)本:70 IT, 101 IT

OpenGL ES 2.0功能

大大提高不同消費(fèi)電子設(shè)備的3D圖形渲染速度;

在嵌入式系統(tǒng)上實(shí)現(xiàn)了全面可編程的3D圖形;

把三維空間中的對(duì)象通過投影、光柵化轉(zhuǎn)換為二維圖像,然后呈現(xiàn)到屏幕上。

1、Shader(就是一段程序Program)

Shader是一段執(zhí)行在GPU上的程序(所以Shader也可以叫做Program),此程序使用OpenGL ES SL語言來編寫。它是一個(gè)描述頂點(diǎn)或像素特性的簡單程序。

- 1.1Pixel Shader

Pixel Shader(像素著色器)就是眾所周知的Fragment Shader,它計(jì)算每個(gè)像素的顏色和其它屬性。它通過應(yīng)用光照值、凹凸貼圖,陰影,鏡面高光,半透明等處理來計(jì)算像素的顏色并輸出。它也可改變像素的深度(z-buffering)或在多個(gè)渲染目標(biāo)被激活的狀態(tài)下輸出多種顏色。一個(gè)Pixel Shader不能產(chǎn)生復(fù)雜的效果,因?yàn)樗辉谝粋€(gè)像素上進(jìn)行操作,而不知道場景的幾何形狀。

- 1.2 Vertex Shader

對(duì)于發(fā)送給GPU的每一個(gè)Vertex(頂點(diǎn)),都要執(zhí)行一次Vertex Shader(頂點(diǎn)著色器)。其功能是把每個(gè)頂點(diǎn)在虛擬空間中的三維坐標(biāo)變換為可以在屏幕上顯示的二維坐標(biāo),并帶有用于z-buffer的深度信息。Vertex Shader可以操作的屬性有:位置、顏色、紋理坐標(biāo),但是不能創(chuàng)建新的頂點(diǎn)。

Vertex Shader輸入數(shù)據(jù)如下:

1)Attributes: 通過頂點(diǎn)數(shù)組(vertex arrays)提供的每個(gè)頂點(diǎn)數(shù)據(jù)

2)Uniforms: Vertex Shader使用的常量數(shù)據(jù)

3)Samplers: Vertex Shader使用的一個(gè)表示紋理類型的Uniforms,在Vertex Shader中是可選的

4)Shader program: Vertex Shader程序源碼或可執(zhí)行文件,它描述了將在頂點(diǎn)上執(zhí)行的操作

Vertex Shader輸出為:varying variables(Vertex Shader的輸出變量,作為Fragment Shader的輸入。必須與Fragment Shader中的輸入Varying一一對(duì)應(yīng)。)

gl_Position: 是每個(gè)點(diǎn)固有的Varying,表示點(diǎn)的空間位置。

- 1.3 Geometry Shader

Geometry Shader是一個(gè)相對(duì)新的Shader類型。它在Driect3D 10和OpenGL 3.2中開始引入,在OpengGL 2.0+中作為擴(kuò)展使用。它的輸入為:點(diǎn)、線和三角形;其輸出為點(diǎn)、線帶和三角形帶。

2、Shading Language

Shading Language僅適合于為GPU編程,編程工具為Cg(Nvidia開發(fā)),Cg編譯器可以輸出Direct3X或OpenGL Shader程序。

3、Shading 算法

- 3.1 插值技術(shù)(可以和任何照明模型組合):

Flat shading

Gouraud shading

Phong shading

- 3.2 照明模型 (可以和任何插值技術(shù)組合):

Blinn–Phong

Cook–Torrance (microfacets)

Lambert

Minnaert

Oren–Nayar (Rough opaque diffuse surfaces)

Phong

Ward anisotropic

4、原語匯編(Primitive Assembly)

在管道(pipeline)中,執(zhí)行完Vertex Shader之后,就執(zhí)行原語匯編。一個(gè)原語(primitive)就是一個(gè)可以使用OpenGL ES畫圖命令進(jìn)行繪制的幾何對(duì)象。

在原語匯編階段,被Vertex Shader處理輸出的頂點(diǎn)被組合進(jìn)行一個(gè)單獨(dú)可被繪制的幾何原語(如:點(diǎn)、線和三角形)。然后對(duì)幾何原語執(zhí)行以下兩種操作:

Clipping(裁剪): 只保留在可視空間范圍內(nèi)的原語

Culling(選擇): 基于面向前或后,進(jìn)行原語的選擇

在裁剪和選擇之后,其下一個(gè)階段為進(jìn)行Geometry Shader(如果存在)或光柵化處理。

5、光柵(Rasterization)

光柵處理的目標(biāo):把原語轉(zhuǎn)換為一系列二維fragments,這些二維fragments將被Fragment Shader處理,且這些二維fragments表示可被繪制在屏幕上的像素。

6、 Fragment Shader

對(duì)每個(gè)光柵化產(chǎn)生的fragment執(zhí)行一次Fragment Shader,其輸入內(nèi)容如下:

Varying variables:Vertex Shader的輸出,且由光柵化單元對(duì)每個(gè)fragment使用插值方法產(chǎn)生

Uniforms:Fragment Shader使用的常量數(shù)據(jù)

Samplers:一個(gè)表示紋理的常量數(shù)據(jù)

Shader program:Fragment shader程序源碼或可執(zhí)行文件,它描述了將在fragment上執(zhí)行的操作。

載地址

  • 電腦版

網(wǎng)友評(píng)論

0條評(píng)論
(您的評(píng)論需要經(jīng)過審核才能顯示)