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 唯一做的只是增加了一些擴展指令集,這些擴展指令是一些繪圖功能,像是ClearCoatMultisample 、視頻及繪圖的整合工具( 某些是通過OpenML 的努力而開發出來的,它本身屬於OpenGL ARB 擴展指令之一。

OpenGL 2.0OpenGL 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.13.0 版的基礎上對整個API 模型體系進行了簡化,可大幅提高軟件開發效率。

OpenGL 3.1 主要新特性:紋理緩衝對象(Texture Buffer Object )、統一緩衝對象(UBOUniform 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 webWebGL 等等。

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

- 改進管線可編程性,包括OpenGL Core 核心裏的幾何着色器。

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

 

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

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

 

opengl 3.3 / glsl 3.3 2010.3

在舊時代顯卡硬件上儘可能地加入了OpenGL 4.0GLSL 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 位浮點組件頂點着色單元輸入,提高几何精度。

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章