天天看點

OpenGL 版本曆史

一份關于OpenGL的編年史。

【 opengl 1.0 】 1992.7

【 opengl 1.1 】 1995.12

1995 年,SGI 推出了更為完善的OpenGL 1.1 版本。OpenGL 1.1 的性能比1.0 版提高甚多。其中包括改進列印機支援,在增強元檔案中包含OpenGL 的調用,頂點數組( Vertex Array ) 的新特性,提高頂點位置、法線、顔色、色彩指數、紋理坐标、多邊形邊緣辨別的傳輸速度,引入了新的紋理特性等等。

【 opengl 1.2 】 1998.3

+

三維紋理:以前的OpenGL 隻支援一維、二維紋理。

像素格式:新增加了GL_BGRA 等原來沒有的像素格式。允許壓縮的像素格式,例如GL_UNSIGNED_SHORT_5_5_5_1 格式,表示兩個位元組,存放RGBA 資料,其中R, G, B 各占5 個二進制位,A 占一個二進制位。

圖像處理:新增了一個“圖像處理子集”,提供一些圖像處理的專用功能,例如卷積、計算柱狀圖等。這個子集雖然是标準規定,但是OpenGL 實作時也可以選擇不支援它。

【 opengl 1.2.1 】 1998.10

+

沒有加入任何新的功能,但是引入了“ARB 擴充”的概念。

【 opengl 1.3 】 2001.8

增加了立方紋理貼圖、紋理環境、多重采樣、紋理架構壓縮等擴充指令,但是改程序度非常有限。

+

壓縮紋理 :在處理紋理時,使用壓縮後的紋理而不是紋理本身,這樣可以節省空間(節省顯存)和傳輸帶寬(節省從記憶體到顯存的資料流量)

多重紋理 :同時使用多個紋理。

多重采樣:一種全屏抗鋸齒技術,使用後可以讓畫面顯示更加平滑,減輕鋸齒現象。對于nvidia 顯示卡,在設定時有一項“3D 平滑處理設定”,實際上就是多重采樣。通常可以選擇2x, 4x ,高性能的顯示卡也可以選擇8x, 16x 。其它顯示卡也幾乎都有類似設定選項,但是也有的顯示卡不支援多重采樣,是以是0x 。

【 opengl 1.4 】 2002.7

隻加入了深度紋理/陰影紋理、頂點設計架構、自動紋理貼圖等簡單的功能。

+

深度紋理 :可以把深度值像像素值一樣放到紋理中,在繪制陰影時特别有用。

輔助顔色:頂點除了有顔色外還有輔助顔色。在使用光照時可以表現出更真實的效果。

【 opengl 1.5 】 2003.7

包含ARB 制定的“正式擴充規格繪制語言”(OpenGL Shading Language v1.0 ),該語言用于着色對象、頂點着色、片斷着色等擴充功能,同時也将作為下一代OpenGL 2.0 版本的核心。OpenGL 1.5 的變化還增加了頂點緩沖對象( VBO:Vertex Buffer Object ) 、非乘方紋理( 可提高紋理記憶體的使用效率) 以及陰影功能、隐蔽查詢功能等等。其主要内容包括

l 頂點Buffer Object :進行頂點配列方式可以提高性能

l Shadow 功能:增加用來比較Shadow 映射的函數

l 隐蔽查詢:為提高curling 性能采用非同步隐蔽測試

l 非乘方紋理:提高mipmap 等紋理記憶體的使用效率

l OpenGL Shading Language v1.0 :用于着色(shader) 對象、頂點着色以及片斷着色的擴充功能

+

緩沖對象:允許把資料(主要指頂點資料)交由OpenGL 儲存到較高性能的存儲器中,提高繪制速度。比頂點數組有更多優勢。頂點數組隻是減少函數調用次數,緩沖對象不僅減少函數調用次數,還加快資料通路速度。

遮擋查詢:可以計算一個物體有幾個像素會被繪制到螢幕上。如果物體沒有任何像素會被繪制,則不需要加載相關的資料(例如紋理資料)。

【 opengl 2.0 / glsl 1.0 】 2004.9

OpenGL 1.0 推出後的相當長的一段時間裡,OpenGL 唯一做的隻是增加了一些擴充指令集,這些擴充指令是一些繪圖功能,像是ClearCoat 、Multisample 、視訊及繪圖的整合工具( 某些是通過OpenML 的努力而開發出來的,它本身屬于OpenGL ARB 擴充指令之一。

OpenGL 2.0 在OpenGL 1.3 基礎上進行修改擴充、五個方面的重大改進:①複雜的核心被徹底精簡;②完全的硬體可程式設計能力;③改進的記憶體管理機制、支援進階像素處理;④擴充至數字媒體領域,使之跨越高端圖形和多媒體範疇;⑤支援嵌入式圖形應用。

為了在獲得強大功能的同時保持理想的相容性,OpenGL 2.0 經曆以下兩個發展階段:第一個階段注重相容能力和平滑過渡,為此,OpenGL 2.0 核心将在精簡後的OpenGL 1.3 功能子產品的基礎上加上可完全相容的新功能共同組成,這種做法在滿足相容性的同時,還可将原有OpenGL 中數量衆多、且互相糾纏不清的擴充指令進行徹底精簡。 第一階段的任務隻是為了過渡,而第二階段才是OpenGL 2.0 的真正成熟期。此時,ARB 将合成出一個“純OpenGL 2.0” 核心,純核心将包含更多新增加的“精簡型API 函數”,這些函數具有完全的可程式設計特性、結構簡單高效、功能強大且應用靈活。除了完成這項任務外,ARB 組織還得指導開發商抛棄繁瑣的OpenGL 1.x 、轉用更具彈性的“純OpenGL 2.0” 。

+

可程式設計着色:允許編寫一小段代碼來代替OpenGL 原來的頂點操作/ 片段操作。這樣提供了巨大的靈活性,可以實作各種各樣的豐富的效果。

紋理大小不再必須是2 的整數次方。

點塊紋理:把紋理應用到一個點(大小可能不隻一個像素)上,這樣比繪制一個矩形可能效率更高。

【 opengl 2.1 / glsl 1.2 】 2006.7

+

可程式設計着色:程式設計語言由原來的1.0 版本更新為1.2 版本。

緩沖區對象:原來僅允許存放頂點資料,現允許存放像素資料( PBO : Pixel Buffer Object ) 。

【 opengl 3.0 / glsl 1.3 】 2008.7

OpenGL 3.0 仍然作為一個開放性和跨平台的3D 圖形接口标準,增加了新版的shader 語言:GLSL 1.30 ,可以充分發揮目前可程式設計圖形硬體的潛能。同時,OGL3.0 還引入了一些新的功能,例如頂點矩陣對象,幀緩存對象( FBO : Frame Buffer Object ) 功能,32bit 浮點紋理和渲染緩存,基于阻塞隊列的條件渲染,緊湊行半浮點頂點和像素資料,四個新壓縮機制等等。

【 opengl 3.1 / glsl 1.4 】 2009.3

OpenGL 3.1 将此前引入的OpenGL 着色語言“GLSL” 從1.30 版更新到了1.40 版,通過改程序式增強了對最新可程式設計圖形硬體的通路,還有更高效的頂點處理、擴充的紋理功能、更彈性的緩沖管理等等。寬泛地講,OpenGL 3.1 在3.0 版的基礎上對整個API 模型體系進行了簡化,可大幅提高軟體開發效率。

OpenGL 3.1 主要新特性:紋理緩沖對象(Texture Buffer Object )、統一緩沖對象(UBO :Uniform Buffer Objects )、符号正常化紋理(Signed Normalized Textures )、基本元素重新開機(Primitive Restart )、執行個體化(Instancing )、拷貝緩沖接口(CopyBuffer API )……

【 opengl 3.2 / glsl 1.5 】 2009.8

OpenGL 3.2 在性能增強、畫質提升、幾何處理加速、Direct3D 程式導入簡化等方面加入了大量新特性,并且和Khronos Group 組織的其它标準進行了深入整合,包括用于并行計算的OpenCL 、面向移動裝置3D 圖形的OpenGL ES 、建立3D web 的WebGL 等等。

- 增強頂點陣列和同步對象的性能,避免在CPU 和GPU 之間或者多個CPU 線程之間共享資源時的等待空閑。

- 改進管線可程式設計性,包括OpenGL Core 核心裡的幾何着色器。

- 着色器可直接處理紋理采樣,提升立方體貼圖畫質和多重采樣渲染彈性。

OpenGL ARB( 架構評審委員會) 工作組同時定義了新版OpenGL 着色語言“GLSL 1.50” ,以及兩種新的Profile :Compatibility Profile( 相容模式) 全面向下相容舊版本的OpenGL 标準,支援現有應用程式;Core Profile( 核心模式) 則更加精煉,主要用于開發新的應用程式。

除此之外,Khronos Group 還定義了五種新的ARB 擴充,可以通過OpenGL 實作最新的GPU 圖形特性。該功能得到認可并被廣泛采納後,會整合在未來版本OpenGL 規範的核心模式之中。

【 opengl 3.3 / glsl 3.3 】 2010.3

在舊時代顯示卡硬體上盡可能地加入了OpenGL 4.0 、GLSL 4.0 的功能,為開發人員提供最大程度的彈性和平台覆寫性。

【 opengl 4.0 / glsl 4.0 】 2010.3

一次重大更新,專門面向AMD Radeon HD 5000 系列( 以及尚未釋出的NVIDIA GeForce GTX 400 系列) 提供了大量全新特性,使開發人員可以更好地使用這些新硬體,還進一步改善了與OpenCL 的協作性,用于計算密集型視覺應用的加速,另外繼續支援OpenGL 3.2 引入的核心與相容性檔案,進而保證向下相容性。

OpenGL 4.0 特别為程式開發人員設計了大量全新特性,包括:

- 兩個新的着色階段 ,讓GPU 接手幾何細分曲面工作,不再勞煩CPU ;

- 每采樣片段着色器與可程式設計片段着色器輸入位置,提高渲染品質和反鋸齒彈性;

- 資料繪圖由OpenGL 或者OpenCL 之類的外部API 負責生成,無需CPU 參與;

- 着色子程式,顯著提升程式設計彈性;

- 經由新的對象類型采樣對象(sampler objects) 實作紋理狀态和紋理資料的分離;

- 64 位雙精度浮點着色器操作和輸入輸出,提升渲染精度和品質;

- 性能改進,包括執行個體化幾何着色器、執行個體化陣列和新的計時器序列。

【 opengl 4.1 / glsl 4.1 】 2010.7

OpenGL 4.1 核心規範主要新功能:

- 全面相容OpenGL ES 2.0 API ,友善移動和桌面平台之間的移植。

- 支援着色器程式對象二進制檔案的查詢和載入,節省重編譯時間。

- 支援将程式與程式設計階段單獨綁定,提高程式設計彈性。

- 支援64 位浮點元件頂點着色單元輸入,提高幾何精度。

- 支援渲染界面多重視角,提高渲染彈性。

繼續閱讀