Opengl和D3D的區別

  • 來源: 網站: 整理時間:2008-9-7

  •  

      最近論壇經常有人問起D3D和opengl的區別,其實cs中用opengl的效果比D3D要好。OpenGL是OpenGraphicLibraly的縮寫,即開放式圖形庫,是SiliconGraPhics公司在其推出的IRISGL圖形庫基礎上發展起來的,可以廣泛使用于PC、工作站和超級計算機上的開放式三維圖形應用和程序接口。(所謂"開放式”即指其可以適用各種計算機環境)主要針對專業CAD/CAM設計領域,適用于WindowsNT、Willdows95、Mac0S、0S/2、Unix等平台,具有非常強的可移植性。

      OpenGL現由業界翍名的OpenGL體系結構評審委員會(ARB)控制。該委員會包括英特爾(Intel)、IBM、微軟(Microsoft)、DEC、康柏(Compag)、SGI、Intergraph、Evans和Suther—land等九個成員,主要負責評審OpenGl的功能擴展和制定相關的技術規範。

      3DAPI的源程序通常分為兩種模式:立即模式和保留模式。立即模式是一種低層的、直接面向圖形硬件的接口模式;保留模式則通過統一的接口與圖形硬件聯系,是一種可控性更強的高級模式。

      OpenGl是一種立即模式的3DAPl,在實時3D處理中性能突出,它可以省略將圖形預先儲存于數據結構的步驟,直接提取圖形的像素,按炤編程人員的指令進行著色渲染,大大節省了3D圖形的處理時間。美中不足的是立即模式不允許0PenGI將本幀畫面的圖形信息傳送給下一幀畫面,必須進行實時重繪,這在一定程度上造成了系統資源的浪費,因此,SGI在OpenGL之上建立了一個新的標准,即OPenGL++,它兼具保留模式的優點,允許開發人員對幀與幀之間的像素進行復制,並應用于新的畫面中。在OPenGL十十之後,SGI還制定了專門面向機械CAD領域的高級三維圖形程序接口—OPenGLOptimizer,它擁有更完善的性能和更強的可操作性。

      在游戲領域,OpenGL的應用時間還比較短,且僅提供立即模式接口,但憑借出色的性能和簡易的操作,迅速得到那些對3D處理要求特別高的游戲的垂青。

      由于OPenGL開發的很早,因此性能非常完善,包含了大量功能強大的圖形函數,可以實現從渲染一個點,到採用Phong光源,MIP紋理映射,以及消除鋸齒等復雜操作的全部3D處理方案。因此,游戲領域應用的雖然只它的子集,就已經可以比DirectX更好的發揮圖形芯片的潛力。微軟曾經多次試圖排擠OpenGL在游戲領域的地位,但始終未能如願以償。反而越來越多的游戲公司(包括Id在內)聯名要求微軟在其操作系統中加入對OpenGL的支持。這導致了微軟最終的妥協—在其與SGI聯合發表的一份聲明中,表示將就OpenGL在Windows中的應用與後者進行更廣泛的合作,在以後的DirectX體系中,OpenGL將會獲得和D3D一樣的重視程度。他們將聯合在一起,在一種新的、命名為DDl(Dev6ceDiverKit)架構中出現。一種專門為WINDOWS作過優化,叫做OpenGLICD(InstalallableClientDriver)的驅動將會使大多數3D卡更容易為OpenGL所識別,從而實現更廣的適用範圍。

      其實,說Direct3D不如OpenGL已經是舊話,隨著DirectX6.0的推出,二者.的性能差距已經微乎其微。究競誰能在以後獲得更廣泛的支持,還要拭目以待。不過無論如何,游戲處理對于OPenGL來說只能算是"邪門歪道”,它在專業3D設計領域的應用才是最佳的價值體現。