主要特點
OpenGL是一個開放的三維圖形軟件包,它獨立于窗口系統(tǒng)和操作系統(tǒng),以它為基礎開發(fā)的應用程序可以十分方便地在各種平臺間移植;OpenGL可以與Visual C++緊密接口,便于實現機械手的有關計算和圖形算法,可保證算法的正確性和可靠性;OpenGL使用簡便,效率高。它具有七大功能:
1.建模:OpenGL圖形庫除了提供基本的點、線、多邊形的繪制函數外,還提供了復雜的三維物體(球、錐、多面體、茶壺等)以及復雜曲線和曲面繪制函數。
2.變換:OpenGL圖形庫的變換包括基本變換和投影變換?;咀儞Q有平移、旋轉、變比鏡像四種變換,投影變換有平行投影(又稱正射投影)和透視投 影兩種變換。其變換方法有利于減少算法的運行時間,提高三維圖形的顯示速度。
3.顏色模式設置:OpenGL顏色模式有兩種,即RGBA模式和顏色索引(Color Index)。
4.光照和材質設置:OpenGL光有輻射光(Emitted Light)、環(huán)境光(Ambient Light)、漫反射光(Diffuse Light)和鏡面光(Specular Light)。材質是用光反射率來表示。場景(Scene)中物體最終反映到人眼的顏色是光的紅綠藍分量與材質紅綠藍分量的反射率相乘后形成的顏色。
5:紋理映射(Texture Mapping)。利用OpenGL紋理映射功能可以十分逼真地表達物體表面細節(jié)。
6:位圖顯示和圖象增強圖象功能除了基本的拷貝和像素讀寫外,還提供融合(Blending)、反走樣(Antialiasing)和霧(fog)的特殊圖象效果處理。以上三條可使被仿真物更具真實感,增強圖形顯示的效果。
7:雙緩存動畫(Double Buffering)雙緩存即前臺緩存和后臺緩存,簡言之,后臺緩存計算場景、生成畫面,前臺緩存顯示后臺緩存已畫好的畫面。
此外,利用OpenGL還能實現深度暗示(Depth Cue)、運動模糊(Motion Blur)等特殊效果。從而實現了消隱算法。OpenGL設備運用,目前瑞芯微2918芯片和英偉達芯片Tegra2 就是采用OpenGL 2.0技術進行圖形處理,而基于瑞芯微2918芯片方案代表是臺電T760和微蜂X7平板電腦所采用到。
高性能圖形算法行業(yè)標準
OpenGL™ 是行業(yè)領域中最為廣泛接納的 2D/3D 圖形 API, 其自誕生至今已催生了各種計算機平臺及設備上的數千優(yōu)秀應用程序。OpenGL™ 是獨立于視窗操作系統(tǒng)或其它操作系統(tǒng)的,亦是網絡透明的。在包含CAD、內容創(chuàng)作、能源、娛樂、游戲開發(fā)、制造業(yè)、制藥業(yè)及虛擬現實等行業(yè)領域中,OpenGL™ 幫助程序員實現在 PC、工作站、超級計算機等硬件設備上的高性能、極具沖擊力的高視覺表現力圖形處理軟件的開發(fā)。
OpenGL的前身是SGI公司為其圖形工作站開發(fā)的IRIS GL。IRIS GL是一個工業(yè)標準的3D圖形軟件接口,功能雖然強大但是移植性不好,于是SGI公司便在IRIS GL的基礎上開發(fā)了OpenGL。OpenGL的英文全稱是“Open Graphics Library”,顧名思義,OpenGL便是“開放的圖形程序接口”。雖然DirectX在家用市場全面領先,但在專業(yè)高端繪圖領域,OpenGL是不能被取代的主角。
OpenGL是個與硬件無關的軟件接口,可以在不同的平臺如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之間進行移植。因此,支持OpenGL的軟件具有很好的移植性,可以獲得非常廣泛的應用。由于OpenGL是圖形的底層圖形庫,沒有提供幾何實體圖元,不能直接用以描述場景。但是,通過一些轉換程序,可以很方便地將AutoCAD、3DS/3DSMAX等3D圖形設計軟件制作的DXF和3DS模型文件轉換成OpenGL的頂點數組。
在OpenGL的基礎上還有Open Inventor、Cosmo3D、Optimizer等多種高級圖形庫,適應不同應用。其中,Open Inventor應用最為廣泛。該軟件是基于OpenGL面向對象的工具包,提供創(chuàng)建交互式3D圖形應用程序的對象和方法,提供了預定義的對象和用于交互的事件處理模塊,創(chuàng)建和編輯3D場景的高級應用程序單元,有打印對象和用其它圖形格式交換數據的能力。
OpenGL的發(fā)展一直處于一種較為遲緩的態(tài)勢,每次版本的提高新增的技術很少,大多只是對其中部分做出修改和完善。1992年7月,SGI公司發(fā)布了OpenGL的1.0版本,隨后又與微軟公司共同開發(fā)了Windows NT版本的OpenGL,從而使一些原來必須在高檔圖形工作站上運行的大型3D圖形處理軟件也可以在微機上運用。1995年OpenGL的1.1版本面市,該版本比1.0的性能有許多提高,并加入了一些新的功能。其中包括改進打印機支持,在增強元文件中包含OpenGL的調用,頂點數組的新特性,提高頂點位置、法線、顏色、色彩指數、紋理坐標、多邊形邊緣標識的傳輸速度,引入了新的紋理特性等等。OpenGL 1.5又新增了“OpenGL Shading Language”,該語言是“OpenGL 2.0”的底核,用于著色對象、頂點著色以及片斷著色技術的擴展功能。
OpenGL 2.0標準的主要制訂者并非原來的SGI,而是逐漸在ARB中占據主動地位的3DLabs。2.0版本首先要做的是與舊版本之間的完整兼容性,同時在頂點與像素及內存管理上與DirectX共同合作以維持均勢。OpenGL 2.0將由OpenGL 1.3的現有功能加上與之完全兼容的新功能所組成(如圖一)。借此可以對在ARB停滯不前時代各家推出的各種糾纏不清的擴展指令集做一次徹底的精簡。此外,硬件可編程能力的實現也提供了一個更好的方法以整合現有的擴展指令。
目前,隨著DirectX的不斷發(fā)展和完善,OpenGL的優(yōu)勢逐漸喪失,至今雖然已有3Dlabs提倡開發(fā)的2.0版本面世,在其中加入了很多類似于DirectX中可編程單元的設計,但廠商的用戶的認知程度并不高,未來的OpenGL發(fā)展前景迷茫。
折疊發(fā)展歷程
1992年7月,SGI公司發(fā)布了OpenGL的1.0版本,隨后又與微軟公司共同開發(fā)了Windows NT版本的OpenGL,從而使一些原來必須在高檔圖形工作站上運行的大型3D圖形處理軟件也可以在微機上運用。
1995年OpenGL的1.1版本面市,該版本較1.0性能提高許多,并加入了一些新的功能。包括提高頂點位置、法線、顏色、色彩指數、紋理坐標、多邊形邊緣標識的傳輸速度,引入了新的紋理特性等等。
1997年,Windows 95下3D游戲的大量涌現,游戲開發(fā)公司迫切需要一個功能強大、兼容性好的3D圖形接口,而當時微軟公司自己的3D圖形接口DirectX 3.0功能卻是很糟糕。因而以制作《雷神之錘》等經典3D射擊游戲而著名的id公司同其它一些游戲開發(fā)公司一同強烈要求微軟在 Windows 95中加入對OpenGL的支持。微軟公司最終在Windows 95的OSR2版和后來的Windows 版本中加入了對OpenGL的支持。這樣,不但許多支持OpenGL的電腦3D游戲得到廣泛應用,而且許多在3D圖形設計軟件也可以運用支持OpenGL標準的3D加速卡,大大提高其3D圖形的處理速度。
2003年的7月28日,SGI和ARB公布了OpenGL 1.5。OpenGL 1.5中包括OpenGL ARB的正式擴展規(guī)格繪制語言“OpenGL Shading Language”。OpenGL 1.5的新功包括:頂點Buffer Object、Shadow功能、隱蔽查詢、非乘方紋理等。
2004年8月,OpenGL2.0版本發(fā)布~OpenGL 2.0標準的主要制訂者并非原來的SGI,而是逐漸在ARB中占據主動地位的3Dlabs。opengl2.0支持OpenGL Shading Language、新的shader擴展特性以及其他多項增強特性。
2008年8月初Khronos工作組在Siggraph 2008大會上宣布了OpenGL 3.0圖形接口規(guī)范,GLSL1.30 shader語言和其他新增功能將再次未來開放3D接口發(fā)展指明方向。
OpenGL 3.0 API開發(fā)代號為Longs Peak,和以往一樣,OpenGL 3.0仍然作為一個開放性和跨平臺的3D圖形接口標準,在Shader語言盛行的今天,OGL3.0增加了新版本的shader語言:GLSL 1.30,可以充分發(fā)揮當前可編程圖形硬件的潛能。同時,OGL3.0還引入了一些新的功能,例如頂點矩陣對象,全幀緩存對象功能,32bit浮點紋理和渲染緩存,基于阻塞隊列的條件渲染,緊湊行半浮點頂點和像素數據,四個新壓縮機制等等。
2009年3月又公布了升級版新規(guī)范OpenGL 3.1,也是這套跨平臺免費API有史以來的第九次更新。OpenGL 3.1將此前引入的OpenGL著色語言“GLSL”從1.30版升級到了1.40版,通過改進程序增強了對最新可編程圖形硬件的訪問,還有更高效的頂點處理、擴展的紋理功能、更彈性的緩沖管理等等。寬泛地講,OpenGL 3.1在3.0版的基礎上對整個API模型體系進行了簡化,可大幅提高軟件開發(fā)效率。
2009年8月Khronos小組發(fā)布了OpenGL 3.2,這是一年以來OpenGL進行的第三次重要升級。該版本仍然延續(xù)了OpenGL發(fā)展的方向讓圖形程序開發(fā)者能在多種操作系統(tǒng)和平臺下更好的利用新的GPU功能。OpenGL3.2版本提升了性能表現、改進了視覺質量、提高了幾何圖形處理速度,而且使Direct3D程序更容易移植為OpenGL。除OpenGL之外,Khronos還將其開發(fā)的其它標準進行了協調改進,以求可以在更廣泛的領域提供強大的圖形功能和計算生態(tài)系統(tǒng),這些標準包括用于并行計算的OpenCL、用于移動3D圖形開發(fā)的OpenGL ES和用于網絡3D開發(fā)的WebGL。
2010年7月26日發(fā)布OpenGL 4.1和OpenGL OpenGL Shading Language 4.10。OpenGL4.1提高視覺密集型應用OpenCL™的互操作性,并繼續(xù)加速計算剖面為核心的支持和兼容性第一次推出的OpenGL 3.2,使開發(fā)人員能夠使用一個簡化的API或保留向后兼容現有的OpenGL代碼,這取決于他們的市場需求。
Khronos旗下的OpenGL ARB(Architecture Review Board)工作組推出了GLSL 1.5OpenGLShading Language(OpenGL著色語言)的升級版,以及在OpenGL3.2框架下推出了兩個新功能,可以讓開發(fā)者在開發(fā)新程序時能夠在使用流水線內核特性或兼容性特性之間做出選擇,其中兼容性特性會提供與舊版OpenGL之間的兼容性。
2011年8月9日在溫哥華舉行的SIGGRAPH 2011大會上Khronos發(fā)布了新的OpenGL 4.2標準細節(jié),對于支持現有硬件的API加入了部分新的支持特性。和OpenGL 4.1一樣,OpenGL 4.2主要應用于DX11級別硬件如NVIDIA GeForce 400/500,Radeon HD 5000/6000系列顯卡,不過NVIDIA的開發(fā)者社區(qū)之前曾經表示部分特性可通過擴展功能在最老支持OpenGL2/DX9級別的硬件上實現。