什么是OpenGL
OpenGL是OpenGraphicsLib的縮寫,是一套三維圖形處理庫,也是該領域的工業標準。計算機三維圖形是指將用數據描述的三維空間通過計算轉換成二維圖像并顯示或打印出來的技術。
OpenGL就是支持這種轉換的程序庫,它源于SGI公司為其圖形工作站開發的IRIS GL,在跨平臺移植過程中發展成為OpenGL。SGI在1992年7月發布1.0版,后成為工業標準,由成立于1992年的獨立財團OpenGL Architecture Review Board (ARB)控制。SGI等ARB成員以投票方式產生標準,并制成規范文檔(Specification)公布,各軟硬件廠商據此開發自己系統上的實現。只有通過了ARB規范全部測試的實現才能稱為OpenGL。1995年12月ARB批準了1.1版本,最新版規范是1999.5通過的1.2.1。
OpenGL被設計成獨立于硬件,獨立于窗口系統的,在運行各種操作系統的各種計算機上都可用,并能在網絡環境下以客戶/服務器模式工作,是專業圖形處理、科學計算等高端應用領域的標準圖形庫。它低端應用上的主要競爭對手是MS-Direct3D,該圖形庫是以COM接口形式提供的,所以極為較復雜,穩定性差,另外微軟公司擁有該庫版權,目前只在Windows平臺上可用。D3D的優勢在速度上,但現在低價顯卡都能提供很好的OpenGL硬件加速,所以做3D使用Direct3D已沒有特別的必要,在專業圖形處理特別是高端應用方面目前還沒有出現以Direct3D技術為基礎的例子,而游戲等低端應用也有轉向OpenGL的趨勢。
微軟在Windows NT對OpenGL的支持始于3.51,在Windows9x中的支持始于Win95 OEM Service Release 2。Windows下常用的OpenGL庫有兩種,MS實現的和SGI實現的,MS-OpenGL調用會自動檢測是否存在顯示卡制造商提供的ICD(Installable Client DeviceDriver)驅動程序,有則調用ICD中的例程,否則才用CPU進行計算,所以能利用顯示卡的OpenGL加速能力。對開發者來說使用方法并沒有區別,只是有ICD驅動時更快些。SGI的版本是純軟件實現不能利用硬件加速并且SGI已經在1999年宣布停止支持,但這套庫便于調試程序,仍有不少開發者使用。
SGI曾經宣布研發OpenGL ,該圖形庫最大的特點是面象對象,提供了樹形場景支持,大大減省了使用OpenGL處理復雜場景的工作量。后來(1999)SGI宣布與M$合作開發Ferihant,即Windows的下一代圖形處理體系,包括DirectX與OpenGL的低級圖形處理接口和以場景圖支持為特點的高級接口,并且就此停止對其在Windows下的OpenGL實現的支持以示決心。此舉世矚目,大家都以為Windows圖形處理快要過上幸福生活了,然而,不久,SGI宣布中止合作,并撤回派出的科學家,Ferihant基本上夭折。SGI 稱終止合作的原因是M$不肯積極合作,光想把SGI 的技術合并進DirectX,真正內幕不詳。不過以SGI在圖形處理界的老大地位來說,還是有幾分可信度的,因為M$初支持OpenGL就不積極。
雖然早在WinNT3.51 時代M$就已經實現了它的OpenGL 版本,但不肯隨其Windows95 時提供,稱該API 適合高端應用,而Win95面向一般消費者的用不到,并且在其win3.x下開發的wing 圖表庫的基礎上搞出了GameSDK,即后來的DirectX 庫,稱這套庫是專門為高性能游戲開發設計的,在當時的硬件條件下,這無疑是非常有道理的,并且很快成為Windows環境下游戲開發的標準API 。該庫實質上是提供了繞過Windows 直接訪問顯存的途徑,從而很好的解決了GDI 體系性能方面的不足,但由于是以COM接口形式提供的,所以相當復雜,而穩定性也不是很好,所以有人稱Direct3D 是為追求速度而不擇手段的公司才用的。然而也就在這個時期,三維圖形加速卡開始走向商用和家用,也就是在這時期S3公司以其性價比極高的帶三維圖形加速的顯示芯片、板卡向當時Trident 公司的霸主地位發起了挑戰。另外這時實時三維游戲開始流行,以Dos 下的第一人稱射擊游戲——暗殺希特勒(3d worlf) 大獲成功、紅極一時ID Software 的開始鑄輝煌,推出了Doom 、Quake1 ,相信這兩個名字在今天(2000.4) 的游戲圈子里應該是無人不知無不曉吧?1996.12.ID Software 的高手John Carmack 在開發下一代三維圖形引擎時在其.plan 中寫上了以下字句:
Direct-3D IM is a horribly broken API. It inflicts great pain and suffering on the programmers using it, without returning any significant advantages. I don’t think there is ANY market segment that D3D is apropriate for, OpenGL seems to work just fine for everything from quake to softimage. There is no good technical reason for the existance of D3D.
I’m sure D3D will suck less with each forthcoming version, but this is an oportunity to just bypass dragging the entire development community through the messy evolution of an ill-birthed API.
此后以他為代表的一大批游戲開發人員開始多方呼吁MS積極支持OpenGL。M$終于在Win95的OSR2版本里集成了OpenGL,并為以前版本的Win95免費提供單獨的OpenGL實現。(或許您還不了解這些人的影響力,不知道您聽說過以生產Voodoo系統圖形加速卡而著稱于世的3dfx公司嗎?當年Quake的開發者不肯用Voodoo的glide API對voodoo做優化版本,差點沒把3dfx嚇蒙,于是趕緊搞了一個針對游戲的OpenGL子集:MiniGL,讓ID Software的人只要在制作OpenGL時只使用MiniGL API做過優化就成,這樣Quake總算可以用上voodoo的硬件加速能力了。這樣也造就了一個新名詞:MCD--MiniGL Client Driver,用于Windows的MiniGL驅動程序,而標準的OpenGL則依靠ICD驅動)。
新聞熱點
疑難解答