OpenCL、OpenGL、DirectX、GDI四者的關系


  OpenGL、Direct3D、GDI這三個是不同的API, 沒有誰屬於誰,其次OpenGL和Direct3D主要用於三維渲染, GDI只能用於繪制二維圖形圖像。前面兩個主要用於實時渲染,后者主要用於Win32程序繪圖。

  GDI僅實現了畫圖功能, 沒有DirectX畫起來流暢 DirectX是有多層緩沖的,支持3D DirectX還支持多咱輸入,比如手柄,網絡連接及播放聲音

GDI功能太簡了,主要用於二維 directx用於三維,用來開發游戲

  GDI,圖形設備接口,MS開發的通用的windows系統圖形編程接口,功能強涉及面廣,一般的編程都用它。但是用來做多媒體開發就差強人意了
OPENGL是SGI開發的一套三維圖形軟件包,出現很早,功能超強,且接口簡潔,運算效率繪圖效果極高,早期大都用在科研部門,運行在高性能計算機上。學術性較強,科研部門用的才多。曲高和寡,被DX搶了市場
DX,MS開發的三維繪圖軟件包,(里面也包括了,語音鼠標鍵盤加速包,還有視頻、圖象)。早期性能比DX差遠了,但是通過操作系統的捆綁銷售以及MS的大力市場推廣,穩穩的占據了市場,並且經過不斷的升級,現在性能上基本已經超過了OPENGL。基本繪圖方法和OPENGL差不多,只不過接口采用COM方式
————————————————

什么是OpenCL?

  OpenCL全稱Open Computing Language,是第一個面向異構系統通用目的並行編程的開放式、免費標准,也是一個統一的編程環境,便於軟件開發人員為高性能計算服務器、桌面計算系統、手持設備編寫高效輕便的代碼,而且廣泛適用於多核心處理器(CPU)、圖形處理器(GPU)、Cell類型架構以及數字信號處理器(DSP)等其他並行處理器,在游戲、娛樂、科研、醫療等各種領域都有廣闊的發展前景。
  
  OpenCL 1.0主要由一個並行計算API和一種針對此類計算的編程語言組成,此外還特別定義了:

  1、C99編程語言並行擴展子集;

  2、適用於各種類型異構處理器的坐標數據和基於任務並行計算API;

  3、基於IEEE 754標准的數字條件;

  4、與OpenGL、OpenGL ES和其他圖形類API高效互通。

  什么是OpenGL?

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

  OpenGL(全寫Open Graphics Library)是個定義了一個跨編程語言、跨平台的編程接口的規格,它用於三維圖象(二維的亦可)。OpenGL是個專業的圖形程序接口,是一個功能強大,調用方便的底層圖形庫。OpenGL的前身是SGI公司為其圖形工作站開發的IRIS GL。IRIS GL是一個工業標准的3D圖形軟件接口,功能雖然強大但是移植性不好,於是SGI公司便在IRIS GL的基礎上開發了OpenGL。OpenGL的英文全稱是“Open Graphics Library”,顧名思義,OpenGL便是“開放的圖形程序接口”。雖然DirectX在家用市場全面領先,但在專業高端繪圖領域,OpenGL是不能被取代的主角。

  Open GL仍然是唯一能夠取代微軟對3D圖形技術的完全控制的API。它仍然具有一定的生命力,但是Silicon Graphics已經不再以任何讓微軟不悅的方式推廣Open GL,因而它存在較高的風險。游戲開發人員是一個有着獨立思想的群體,很多重要的開發人員目前仍然在使用Open GL。因此,硬件開發商正在設法加強對它的支持。Direct3D目前還不能支持高端的圖形設備和專業應用; Open GL在這些領域占據着統治地位。最后,開放源碼社區(尤其是Mesa項目)一直致力於為任何類型的計算機(無論它們是否使用微軟的操作系統)提供Open GL支持。
  
  今年08年正式公布OpenGL3.0版本。並且得到了,nv的支持,其官方網站上提供針對N卡的sdk下載。

  什么是DirectX?

  DirectX是一種應用程序接口(API),它可讓以windows為平台的游戲或多媒體程序獲得更高的執行效率,加強3d圖形和聲音效果,並提供設計人員一個共同的硬件驅動標准,讓游戲開發者不必為每一品牌的硬件來寫不同的驅動程序,也降低用戶安裝及設置硬件的復雜度。這樣說是不是有點不太明白,其實從字面意義上說,Direct就是直接的意思,而后邊的X則代表了很多的意思,從這一點上我們就可以看出DirectX的出現就是為了為眾多軟件提供直接服務的。

  DirectX是由很多API組成的,按照性質分類,可以分為四大部分,顯示部分、聲音部分、輸入部分和網絡部分。

  顯示部分擔任圖形處理的關鍵,分為DirectDraw(DDraw)和 Direct3D(D3D),前者主要負責2D圖像加速。它包括很多方面:我們播放mpg、DVD電影、看圖、玩小游戲等等都是用的DDraw,你可以把它理解成所有划線的部分都是用的DDraw。后者則主要負責3D效果的顯示,比如CS中的場景和人物、FIFA中的人物等等,都是使用了DirectX的 Direct3D。

  OpenCL、OpenGL和DirectX之間不得不說的故事

  業界對Apple的OpenCL的支持將成為它發展的重要因素,早在90年代中期,微軟就曾經努力阻止OpenGL成為行業的標准,以推行自己的DirectX顯卡軟件和游戲工具。微軟的Direct X起初的戰略是為了推動DOS游戲開發者轉向Windows,從此之后它就被綁定在Windows下為PC游戲服務,所以它僅支持Windows。

  斷發布新版的DirectX也推動了開發者轉向最新版的Windows,比如最新版的DirectX 10就帶來了不少Vista專屬游戲,從而推動了Vista的銷量,然而它並未達到預期的效果,因為Vista的速度阻礙了DirectX10游戲的市場,開發者只能將目標再次轉向XP。

  OpenGL和Apple

  OpenGL的前身是高端圖形工作站廠商SGI在80年代所開發的IRIS G,它在90年代初期成為了開源的標准。當時微軟在它的Windows 95中發布了Direct3D,將它作為OpenGL的競爭對手。而在90年代末,微軟曾經和SGI進行了Fahrenheit項目的開發,試圖將兩者結合起來,但是沒有成功。之后微軟繼續開發DirectX並與GPU廠商合作,留下OpenGL任其發展。

  OpenGL之后幾乎逐漸消失,直到90年代末Apple放棄了自己的QuickDraw 3D,將OpenGL作為Mac OS X的官方3D庫。Apple的系統給OpenGL程序帶來了不少擁護者。之后OpenGL正式被Linux采用,現在主流的游戲平台,包括PSP,PS3 和Wii都支持該技術。

  但是微軟的Xbox360例外,它采用了自己的DirectX 圖形庫,而將OpenGL排除在外。如今OpenGL對DirectX來說比以前更有競爭力了。而微軟計划在Windows 7中的DirectX 11增加類似於OpenCL的技術,以實現GPGPU運算。但是Apple的OpenCL能更緊密地與OpenGL代碼協同工作,能帶來更廣泛的支持。 Apple還將OpenCL作為一個免費的,開源的標准,讓任何人都能參與到該平台中來。

  OpenGL和OpenCL設計的相似性,使開發者更易於開發。比如在OpenCL下進行數據虛擬化計算,可以把相同的對象在OpenGL上進行圖形渲染。同時OpenGL下的圖形渲染可以在OpenCL下進行處理和轉換。

  OpenCL得到了GPU廠商NVIDIA和AMD的支持,同時支持Apple,SONY,任天堂的平台,還支持Linux和Windows,而且任何公司的開發者都可以參與到該技術的發展中來。

轉載:

  1. OenGL、DirecX、GDI三者關系

  2. OpenCL、OpenGL和DirectX三者的區別


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM