標籤:ble color wiki poi images embed gui pos body
轉:http://wiki.jikexueyuan.com/project/opengl-es-guide/pipeline.html
OpenGL ES 主要用來開發 3D 圖形應用的。OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三維圖形 API 的子集,針對手機、PDA 和遊戲主機等嵌入式裝置而設計。
什麼是 OpenGL ES?
- OpenGL ES (為 OpenGL for Embedded System 的縮寫) 為適用於嵌入式系統的一個免費二維和三維圖形庫。
- 為案頭版本 OpenGL 的一個子集。
- OpenGL ES 定義了一個在移動平台上能夠支援 OpenGL 最準系統的精簡標準,以適應如手機,PDA 或其它消費者移動終端的顯示系統。
- Khronos Group 定義和管理了 OpenGL ES 標準。
OpenGL 與 OpenGL ES 的關係
OpenGL ES 是基於案頭版本 OpenGL 的,顯示了 OpenGL 和 OpenGL ES 之間的關係圖
- OpenGL ES 1.0 基於 OpenGL 1.3 , 在 2003 年發布
- OpenGL ES 1.1 基於 OpenGL 1.5 , 在 2004 年發布
- OpenGL ES 2.0 基於 OpenGL2.0, 在 2007 年發布
- OpenGL 2.0 向下相容 OpenGL 1.5 而 OpenGL ES 2.0 和OpenGL ES 1.x 不相容,是兩種完全不同的實現。
OpenGL ES 管道(Pipeline)
大部分圖形系統都可以比作工廠中的裝配線(Assemble line)或者稱為管道(Pipeline)。前一道的輸出作為下道工序的輸入。主 CPU 發出一個繪圖指令,然後可能由硬體組件完成座標變換,裁剪,添加顏色或是材質,最後在螢幕上顯示出來。
OpenGL ES 1.x 的工序是固定的,稱為 Fix-Function Pipeline,可以想象一個帶有很多控制開關的機器,儘管加工的工序是固定的,但是可以通過開啟或關閉開關來設定參數或者開啟關閉某些功能。
OpenGL ES 2.0 允許提供編程來控制一些重要的工序,一些“繁瑣”的工序比如柵格化等仍然是固定的。
顯示了 OpenGL ES 1.x 固定管道的結構圖:
- 管道“工序”大致可以分為 Transformation Stage 和 Rasterization Stage 兩大步。
- OpenGL ES 支援的基本圖形為 點 Point, 線 Line, 和三角形 Triangle ,其它所有複製圖形都是通過這幾種基本幾何圖形組合而成。
- 在發出繪圖指令後,會對頂點(Vertices)數組進行指定的座標變換或光照處理。
- 頂點處理完成後,通過 Rasterizer 來產生像素資訊,稱為”Fragments“ 。
- 對於 Fragment 在經過 Texture Processing, Color Sum ,Fog 等處理並將最終處理結果存放在記憶體中(稱為FrameBuffer)。
- OpenGL 2.0可以通過編程來修改藍色的步驟,稱為 Programmable Shader.
以上管道中工序可以通過設定來開啟或關閉某些功能(比如無需霧化 Fog 處理),並可以為某個工序設定參數,比如設定 Vertext Array。
(轉)Android OpenGL ES(一)