(僅是草稿,未做整理)
第一章
導言
這份文檔描述OpenGL ES圖形系統具體內容,如它是一個什麼樣的系統,如何運作,要實現它有什麼要求。我們認為讀者已經有一定的電腦圖形基礎知識。這意味著讀者要對電腦圖形重要的演算法和基本的圖形硬體及相關內容是熟悉的。
1.1可選特性的格式(Formatting Of Optional Features)
規範中定義的一些特性是可選的,即在實現OpenGL ES時可以選擇性地提供這些特性。這些可選的功能,在規範中中會先定義出來。可選的狀態表格入口用灰色背景表示。
1.2 OpenGL ES圖形系統定義
OpenGL ES是圖形硬體的軟體介面。這些介面由一系列的過程和函數。程式員就可以通過這些介面定義其對象和操作從而產生高品質的圖形映像和3D 物件的顏色映像。
大部分OpenGL ES要求圖形硬體有一個幀緩衝。多數OpenGL ES調用可以用於畫點,線,多邊形對象。但在有些時候,如反鋸齒或紋理功能使能的時候,還是要依賴於幀緩衝。甚至,有些OpenGL ES對幀控制龍為重視。
OpenGL ES1.1是基於OpengGL1.5圖形系統,設計主要是用於運行一個嵌入式和行動裝置的圖形硬體。它刪除了大量的多餘和到期的功能函數,同時加入了一些新的特性。在此規範中對OpenGL ES 和OpengGL之前的不同不處沒有進行詳細描述,而只是在檔案名稱為“OpenGL ES Common/Common-Lite Profile Specification(Difference Specification)”的文檔中作了總結。
1.3 OpenGL ES圖形系統Profiles
此規範描述了OpenGL ES 兩個Profile:Common和Common Lite。有許多命令在兩profile中是共用的,而有些命令是則只有一個Profile支援。
Common Lite不同於Common的地方主要是Common Lite用於簡單的圖形系統,不支援高效能的浮點運算。Common Lite支援帶定點參數的命令,而Common同時支援帶有浮點參數的命令。
兩個profile的不同及只有Common profile支援的命令收集在附錄C和規範中的相應章節中。
1.4 從編程者角度看OpenGL ES
對編程者來說,OpenGL ES就是一組命令,通過命令可以定義一個二維和三維的幾何對象,和如何把這些對象渲染到幀緩衝中。OpenGL ES提供了立即模式(immediate-mode)的介面,即定義了一個對象則將被畫出。
使用OpenGL ES的典型程式中,開始於開啟視窗的調用,此視窗是當前程式所要寫入到幀緩衝,然後使用分配一個OpenGL ES上下文和與視窗相關的調用。這些步驟的實施有時候會用通過一組API,如Khronos Native Platform Graph-icsInterface(EGL),並且文檔是分開的。一旦上下文分配好,那麼程式員就可以自由地使用OpenGL ES命令了。一些調用是用來畫簡單的幾何對象,如點,線和多邊形,而其他則可用來渲染,包括如何點燃和著色,及如何從使用者的二維或三維模形空間轉換到二維的螢幕。另外還有些調用會直接操作幀緩衝如讀取像素。
1.5 從實現者角度看OpenGL ES
對於實現者來說,OpenGL ES是一組通過操作圖形硬體的命令。如果硬體包含了一個可訪問的幀緩衝,那麼在主機的cpu上,OpenGL ES必須實現所有的命令。更一般情況下,圖形硬體會包括一定的圖形加速,如用來渲染二維線和多邊形複雜的浮點處理器和處理幾何資料轉換和計算的光柵子系統。OpenGL ES實現者的任務是是提供cpu的軟體介面,同時在圖形硬體和cpu中剝離每一個OpenGL ES命令。這個剝離結果是在執行OpenGL ES調用時,能使圖形硬體必鬚髮揮出最優的效能。
OpenGL ES維持著相當量的狀態資訊,這些狀態控制著對象如何寫入幀緩衝。其中的一些狀態可以直接被使用者所使用。他/她可以通過調用相關函數來擷取這些狀態值。而其中一些狀態,只有對在它畫的過程中的影響才是可見的。此規範的一個主要目標是使得OpenGL ES狀態能更加清晰明顯表明它是如何改變和效果什麼。
1.6 我們的角度
我們把OpenGL ES看作是一個狀態機器,此狀態機器控制著一組畫操作。這個模式產生的規範應該滿足程式員和實現者的需求。但是,它不必提供一個實現。一個實現必須遵守所約定的方法。但也許有其他比已經定義的更為有效方式來實現一個特定的計算。