OpenGL

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

目錄

什麼是OpenGL

  OpenGL(全寫Open Graphics Library)是指定義了一個跨編程語言、跨平臺的編程介面規格的專業的圖形程式介面。它用於三維圖像(二維的亦可),是一個功能強大,調用方便的底層圖形庫。

  OpenGL? 是行業領域中最為廣泛接納的 2D/3D 圖形 API,其自誕生至今已催生了各種電腦平臺及設備上的數千優秀應用程式。OpenGL? 是獨立於視窗操作系統或其它操作系統的,亦是網路透明的。在包含CAD、內容創作、能源娛樂、游戲開發、製造業、製藥業及虛擬現實等行業領域中,OpenGL? 幫助程式員實現在 PC工作站、超級電腦等硬體設備上的高性能、極具衝擊力的高視覺表現力圖形處理軟體的開發。

OpenGL發展歷程

  OpenGL的前身是SGI公司為其圖形工作站開發的IRIS GL。IRIS GL是一個工業標準的3D圖形軟體介面,功能雖然強大但是移植性不好,於是SGI公司便在IRIS GL的基礎上開發了OpenGL。OpenGL的英文全稱是“Open Graphics Library”,顧名思義,OpenGL便是“開放的圖形程式介面”。雖然DirectX在家用市場全面領先,但在專業高端繪圖領域,OpenGL是不能被取代的主角。

  OpenGL的發展一直處於一種較為遲緩的態勢,每次版本的提高新增的技術很少,大多只是對其中部分做出修改和完善。1992年7月,SGI公司發佈了OpenGL的1.0版本,隨後又與微軟公司共同開發了Windows NT版本的OpenGL,從而使一些原來必須在高檔圖形工作站上運行的大型3D圖形處理軟體也可以在微機上運用。1995年OpenGL的1.1版本面市,該版本比1.0的性能有許多提高,並加入了一些新的功能。其中包括改進印表機支持,在增強元文件中包含OpenGL的調用,頂點數組的新特性,提高頂點位置、法線、顏色、色彩指數、紋理坐標、多邊形邊緣標識的傳輸速度,引入了新的紋理特性等等。OpenGL 1.5又新增了“OpenGL Shading Language”,該語言是“OpenGL 2.0”的底核,用於著色對象、頂點著色以及片斷著色技術的擴展功能。

  隨著DirectX的不斷發展和完善,OpenGL的優勢逐漸喪失,至今雖然已有3Dlabs提倡開發的2.0版本面世,在其中加入了很多類似於DirectX中可編程單元的設計,但廠商和用戶認知程度並不高,未來的OpenGL發展前景迷茫。

  1992年7月,SGI公司發佈了OpenGL的1.0版本,隨後又與微軟公司共同開發了Windows NT版本的OpenGL,從而使一些原來必須在高檔圖形工作站上運行的大型3D圖形處理軟體也可以在微機上運用。

  1995年OpenGL的1.1版本面市,該版本較1.0性能提高許多,並加入了一些新的功能。包括提高頂點位置、法線、顏色、色彩指數、紋理坐標、多邊形邊緣標識的傳輸速度,引入了新的紋理特性等等。

  1997年,Windows 95下3D游戲的大量涌現,游戲開發公司迫切需要一個功能強大、兼容性好的3D圖形介面,而當時微軟公司自己的3D圖形介面DirectX 3.0功能卻是很糟糕。因而以製作《雷神之錘》等經典3D射擊游戲而著名的id公司同其它一些游戲開發公司一同強烈要求微軟在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的正式擴展規格繪製語言“OpenGL Shading Language”。OpenGL 1.5的新功包括:頂點Buffer Object、Shadow功能、隱蔽查詢、非乘方紋理等。

  2004年8月,OpenGL2.0版本發佈~OpenGL 2.0標準的主要制訂者並非原來的SGI,而是逐漸在ARB中占據主動地位的3Dlabs。OpenGL2.0支持OpenGL Shading Language、新的shader擴展特性以及其他多項增強特性。

  2008年8月初Khronos工作組在Siggraph 2008大會上宣佈了OpenGL 3.0圖形介面規範,GLSL1.30 shader語言和其他新增功能將再次對未來開放3D介面發展指明方向。

  OpenGL 3.0 API開發代號為Longs Peak,和以往一樣,OpenGL 3.0仍然作為一個開放性和跨平臺的3D圖形介面標準,在Shader語言盛行的今天,OGL3.0增加了新版本的shader語言:GLSL 1.30,可以充分發揮當前可編程圖形硬體的潛能。同時,OGL3.0還引入了一些新的功能,例如頂點矩陣對象,全幀緩存對象功能,32bit浮點紋理和渲染緩存,基於阻塞隊列的條件渲染,緊湊行半浮點頂點和像素數據,四個新壓縮機制等等。

  2009年3月又公佈了升級版新規範OpenGL 3.1,也是這套跨平臺免費API有史以來的第九次更新。OpenGL 3.1將此前引入的OpenGL著色語言“GLSL”從1.30版升級到了1.40版,通過改進程式增強了對最新可編程圖形硬體的訪問,還有更高效的頂點處理、擴展的紋理功能、更彈性緩衝管理等等。寬泛地講,OpenGL 3.1在3.0版的基礎上對整個API模型體系進行了簡化,可大幅提高軟體開發效率

  2009年8月Khronos小組發佈了OpenGL 3.2,這是一年以來OpenGL進行的第三次重要升級。該版本仍然延續了OpenGL發展的方向讓圖形程式開發者能在多種操作系統和平臺下更好的利用新的GPU功能。OpenGL3.2版本提升了性能表現、改進了視覺質量、提高了幾何圖形處理速度,而且使Direct3D程式更容易移植為OpenGL。除OpenGL之外,Khronos還將其開發的其它標準進行了協調改進,以求可以在更廣泛的領域提供強大的圖形功能和計算生態系統,這些標準包括用於並行計算的OpenCL、用於移動3D圖形開發的OpenGL ES和用於網路3D開發的WebGL。

  2010年7月26日發佈OpenGL 4.1和OpenGL OpenGL Shading Language 4.10。OpenGL4.1提高視覺密集型應用OpenCL?的互操作性,並繼續加速計算剖面為核心的支持和兼容性第一次推出的OpenGL 3.2,使開發人員能夠使用一個簡化的API或保留向後兼容現有的OpenGL代碼,這取決於他們的市場需求

  Khronos旗下的OpenGL ARB(Architecture Review Board)工作組推出了GLSL 1.5OpenGLShading Language(OpenGL著色語言)的升級版,以及在OpenGL3.2框架下推出了兩個新功能,可以讓開發者在開發新程式時能夠在使用流水線內核特性或兼容性特性之間做出選擇,其中兼容性特性會提供與舊版OpenGL之間的兼容性。

  2011年8月9日在溫哥華舉行的SIGGRAPH 2011大會上Khronos發佈了新的OpenGL 4.2標準細節,對於支持現有硬體的API加入了部分新的支持特性。和OpenGL 4.1一樣,OpenGL 4.2主要應用於DX11級別硬體如NVIDIA GeForce 400/500,Radeon HD 5000/6000系列顯卡,不過NVIDIA的開發者社區之前曾經表示部分特性可通過擴展功能在最老支持OpenGL2/DX9級別的硬體上實現。

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面向對象的工具包,提供創建互動式3D圖形應用程式的對象和方法,提供了預定義的對象和用於交互的事件處理模塊,創建和編輯3D場景的高級應用程式單元,有列印對象和用其它圖形格式交換數據的能力。

  OpenGL是一個開放的三維圖形軟體包,它獨立於視窗系統和操作系統,以它為基礎開發的應用程式可以十分方便地在各種平臺間移植;OpenGL可以與Visual C++緊密介面,便於實現機械手的有關計算和圖形演算法,可保證演算法的正確性和可靠性;OpenGL使用簡便,效率高。它具有七大功能:

  1.建模:OpenGL圖形庫除了提供基本的點、線、多邊形的繪製函數外,還提供了複雜的三維物體(球、錐、多面體、茶壺等)以及複雜曲線和曲面繪製函數。

  2.變換:OpenGL圖形庫的變換包括基本變換和投影變換。基本變換有平移、旋轉、縮放、鏡像四種變換,投影變換有平行投影(又稱正射投影)和透視投 影兩種變換。其變換方法有利於減少演算法的運行時間,提高三維圖形的顯示速度。

  3.顏色模式設置:OpenGL顏色模式有兩種,即RGBA模式和顏色索引(Color Index)。

  4.光照和材質設置:OpenGL光有自發光(Emitted Light)、環境光(Ambient Light)、漫反射光(Diffuse Light)和高光(Specular Light)。材質是用光反射率來表示。場景(Scene)中物體最終反映到人眼的顏色是光的紅綠藍分量與材質紅綠藍分量的反射率相乘後形成的顏色。

  5:紋理映射(Texture Mapping)。利用OpenGL紋理映射功能可以十分逼真地表達物體錶面細節。

  6:點陣圖顯示和圖象增強圖象功能除了基本的拷貝和像素讀寫外,還提供融合(Blending)、抗鋸齒(反走樣)(Antialiasing)和霧(fog)的特殊圖象效果處理。以上三條可使被模擬物更具真實感,增強圖形顯示的效果。

  7:雙緩存動畫(Double Buffering)雙緩存即前臺緩存和後臺緩存,簡言之,後臺緩存計算場景、生成畫面,前臺緩存顯示

  後臺緩存已畫好的畫面。

  此外,利用OpenGL還能實現深度暗示(Depth Cue)、運動模糊(Motion Blur)等特殊效果。從而實現了消隱演算法。OpenGL設備運用,目前瑞芯微2918晶元和英偉達晶元Tegra2 就是採用OpenGL 2.0技術進行圖形處理,而基於瑞芯微2918晶元方案代表是臺電T760和微蜂X7平板電腦所採用到。

  高級功能

  OpenGL被設計為只有輸出的,所以它只提供渲染功能。核心API沒有視窗系統、音頻、列印、鍵盤/滑鼠或其它輸入設備的概念。雖然這一開始看起來像是一種限制,但它允許進行渲染的代碼完全獨立於他運行的操作系統,允許跨平臺開發。然而,有些整合於原生視窗系統的東西需要允許和宿主系統交互。這通過下列附加API實現:

  * GLX - X11(包括透明的網路)

  * WGL - Microsoft Windows

  * AGL - Apple MacOS

  另外,GLUT庫能夠以可移植的方式提供基本的視窗功能。

本條目對我有幫助0
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您認為本條目還有待完善,需要補充新內容或修改錯誤內容,請編輯條目

本条目由以下用户参与贡献

刘维燎,苏青荇,nonameh.

評論(共0條)

提示:評論內容為網友針對條目"OpenGL"展開的討論,與本站觀點立場無關。

發表評論請文明上網,理性發言並遵守有關規定。

MBA智库
打开APP

以上内容根据网友推荐自动排序生成