分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
opengl es 概述
本文對 opengl es 做了綜合性的介紹,包括 opengl es 的由來、主要版本及其特點、opengl es 與 opengl 的主要區別等等。
簡介
2
opengl_es是khronos協會從opengl裁剪定製而來的,專為手機,遊戲機等嵌入式裝置而設計。它的介面其實和 open gl很類似。
opengl_es有幾個主要版本,但對遊戲開發來說,需要關注的只有兩個: opengl_es_1.x_和 opengl_es_2.x。
兩者的特性和主要區別如下:
opengl_es_1.x 為固定渲染管線(fixed_function)而設計。子版本包括:1.0,1.1。1.0從opengl_1.3裁減而來;1.1從opengl_1.5裁減而來。1.1向下相容1.0。經研究,1.1因為更先進,而且相比1.0增加的特性也都很有用,所以基本上不用考慮1.0了。1.1和1.0的變化不算很大,應該晶元的**也不會高出很多?1.1的技術規範參見:es_full_spec.1.1.12.pdf 或者 es_cm_spec_1.1.12.pdf。
opengl_es_2.x 為可程式設計渲染管線(programmable)而設計。目前只有2.0這乙個子版本,從opengl_2.0裁減而來。和1.x的區別是可以支援vertex和pixel shader,因此能夠實現更多的特效。另外2.0就不再支援1.x裡面的固定管線功能了,也就是說2.x並不向下相容1.x。技術規範參見:es_full_spec_2.0.22.pdf 或者:es_cm_spec_2.0.22.pdf。
opengl es相對opengl刪減了一切低效能的操作方式,有高效能的決不留低效能的,即只求效能不求相容性。比如
沒有double型資料型別,但加入了高效能的定點小數資料型別;
沒有glbegin/glend/glvertex,只能用gldrawarrays/gldraw......;
沒有實時將非壓縮資料轉成壓縮貼圖的功能,程式必須直接提供壓縮好的貼圖;
opengl es 與 opengl 的區別
3
資料型別:
1. i glint 整數型
2. f glfixed 定點小數
3. x glclampx 限定型定點小數
刪除的功能:
1. glbegin/glend
2. glarrayelement
3. 顯示列表
4. 求值器
5. 索引色模式
6. 自定義裁剪平面
7. glrect
8. 影象處理(這個一般顯示卡也沒有,firegl/quadro顯示卡有)
9. 反饋緩衝
10.選擇緩衝
11.累積緩衝
12.邊界標誌
13.glpolygonmode
14.gl_quads,gl_quad_strip,gl_polygon
15.glpushattrib,glpopattrib,glpushclientattrib,glpopclientattrib
16.texture_1d、texture_3d、texture_rect、texture_cube_map
17.gl_combine
18.自動紋理座標生成
19.紋理邊界
20.gl_clamp、gl_clamp_to_border
21.消失紋理代表
22.紋理lod限定
23.紋理偏好限定
24.紋理自動壓縮、解壓縮
25.gldrawpixels,glpixeltransfer,glpixelzoom
26.glreadbuffer,gldrawbuffer,glcopypixels
其它注意事項:
1. gldrawarrays等函式中資料必須緊密排列,即間隔為0
2. 各種資料的堆疊深度較低
opengl based graphics : a state machine
4it's a state machine - setup the stage, lighting, actors... then draw it.
sample opengl es 2.0 program as following:
// setup
handle = get_platform_specific_window_handle();
eglgetdisplay(handle);
eglinitialize();
eglbindapi(egl_opengl_es_api);
eglchooseconfig();
eglcreatewindowsu***ce();
eglcreatecontex();
eglmakecurrent();
//actors
float afvertices = ;
glenablevertexattribarray(0);
glvertexattribpointer(vertex_array,gl_float,gl_false,afvertices);
gldrawarrays(gl_********_strip, 0, 4);
//show
eglswapbuffers(egldisplay,eglsu***ce);
給我老師的人工智慧教程打call!
關於OpenGL ES版本
1.opengl es 各版本 opengl es 1.x 針對固定管線硬體 opengl es 2.x 針對可程式設計管線硬體 opengl es 1.0 以 opengl 1.3 規範為基礎 opengl es 1.1 以 opengl 1.5 規範為基礎 opengl es 2.0 以 ope...
OpenGl ES 使用流程
opengl es 2.0 graphics pipeline 渲染管線流程 vertex arrays buffer object 頂點資料 vertex shader 頂點shader primitive assembly 圖元裝配 rasterization 光柵化 fragment shad...
OpenGL ES渲染管線
渲染管線 graphics pipeline 在 opengl es 1.0 版本中,支援固定管線,而 opengl es 2.0 版本不再支援固定管線,只支援可程式設計管線。什麼是管線?什麼又是固定管線和可程式設計管線?管線 pipeline 也稱渲染管線,因為 opengl es在渲染處理過程中...