什麼是OpenGL

 
   OpenGL是該領域的工業標準。計算機三維圖形是指將用數據描述的三維空間通過計算轉換成二維圖像並顯示或打印出來的技術。

  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驅動)。

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