鍍金池/ 教程/ Android/ OpenGL ES 管道(Pipeline)
繪制線段 Line Segment
投影變換 Projection
繪制迷你太陽系
繪制一個球體
繪制三角形 Triangle
OpenGL 光照模型
三維坐標系及坐標變換初步
定義 3D 模型的前面和后面
繪制一個 20 面體
顏色 Color
Depth Buffer
材質及光照示例
基本幾何圖形定義
關于EGL
導言
Viewing 和 Modeling(MODELVIEW) 變換
FrameBuffer
設置光照效果 Set Lighting
Viewport 變換
階段小結
繪制點 Point
OpenGL ES API 命名習慣
通用的矩陣變換指令
關于 OpenGL ES
創(chuàng)建實例應用 OpenGLDemos 程序框架
OpenGL ES 管道(Pipeline)
GLSurfaceView

OpenGL ES 管道(Pipeline)

大部分圖形系統(tǒng)都可以比作工廠中的裝配線(Assemble line)或者稱為管道(Pipeline)。前一道的輸出作為下道工序的輸入。主 CPU 發(fā)出一個繪圖指令,然后可能由硬件部件完成坐標變換,裁剪,添加顏色或是材質,最后在屏幕上顯示出來。

OpenGL ES 1.x 的工序是固定的,稱為 Fix-Function Pipeline,可以想象一個帶有很多控制開關的機器,盡管加工的工序是固定的,但是可以通過打開或關閉開關來設置參數(shù)或者打開關閉某些功能。

OpenGL ES 2.0 允許提供編程來控制一些重要的工序,一些“繁瑣”的工序比如柵格化等仍然是固定的。

下圖顯示了 OpenGL ES 1.x 固定管道的結構圖:

http://wiki.jikexueyuan.com/project/opengl-es-guide/images/42.png" alt="" />

  • 管道“工序”大致可以分為 Transformation Stage 和 Rasterization Stage 兩大步。
  • OpenGL ES 支持的基本圖形為 點 Point, 線 Line, 和三角形 Triangle ,其它所有復制圖形都是通過這幾種基本幾何圖形組合而成。
  • 在發(fā)出繪圖指令后,會對頂點(Vertices)數(shù)組進行指定的坐標變換或光照處理。
  • 頂點處理完成后,通過 Rasterizer 來生成像素信息,稱為”Fragments“ 。
  • 對于 Fragment 在經(jīng)過 Texture Processing, Color Sum ,Fog 等處理并將最終處理結果存放在內(nèi)存中(稱為FrameBuffer)。
  • OpenGL 2.0可以通過編程來修改藍色的步驟,稱為 Programmable Shader.

以上管道中工序可以通過設置來打開或關閉某些功能(比如無需霧化 Fog 處理),并可以為某個工序設置參數(shù),比如設置 Vertext Array。

本教程主要介紹 OpenGL ES 1.1 編程,支持 OpenGL ES 2.0 的設備一般會同時支持 OpenGL ES 1.1。