什么是OpenCL?
OpenCL全稱Open Computing Language,是第一個(gè)面向異構(gòu)系統(tǒng)通用目的并行編程的開放式、免費(fèi)標(biāo)準(zhǔn),也是一個(gè)統(tǒng)一的編程環(huán)境,便于軟件開發(fā)人員為高性能計(jì)算服務(wù)器、桌面計(jì)算系統(tǒng)、手持設(shè)備編寫高效輕便的代碼,而且廣泛適用于多核心處理器(CPU)、圖形處理器(GPU)、Cell類型架構(gòu)以及數(shù)字信號(hào)處理器(DSP)等其他并行處理器,在游戲、娛樂、科研、醫(yī)療等各種領(lǐng)域都有廣闊的發(fā)展前景。
OpenCL 1.0主要由一個(gè)并行計(jì)算API和一種針對(duì)此類計(jì)算的編程語言組成,此外還特別定義了:
1、C99編程語言并行擴(kuò)展子集;
2、適用于各種類型異構(gòu)處理器的坐標(biāo)數(shù)據(jù)和基于任務(wù)并行計(jì)算API;
3、基于IEEE 754標(biāo)準(zhǔn)的數(shù)字條件;
4、與OpenGL、OpenGL ES和其他圖形類API高效互通。
什么是OpenGL?
OpenGL™ 是行業(yè)領(lǐng)域中最為廣泛接納的 2D/3D 圖形 API, 其自誕生至今已催生了各種計(jì)算機(jī)平臺(tái)及設(shè)備上的數(shù)千優(yōu)秀應(yīng)用程序。OpenGL™ 是獨(dú)立于視窗操作系統(tǒng)或其它操作系統(tǒng)的,亦是網(wǎng)絡(luò)透明的。在包含CAD、內(nèi)容創(chuàng)作、能源、娛樂、游戲開發(fā)、制造業(yè)、制藥業(yè)及虛擬現(xiàn)實(shí)等行業(yè)領(lǐng)域中,OpenGL™ 幫助程序員實(shí)現(xiàn)在 PC、工作站、超級(jí)計(jì)算機(jī)等硬件設(shè)備上的高性能、極具沖擊力的高視覺表現(xiàn)力圖形處理軟件的開發(fā)。
OpenGL(全寫Open Graphics Library)是個(gè)定義了一個(gè)跨編程語言、跨平臺(tái)的編程接口的規(guī)格,它用于三維圖象(二維的亦可)。OpenGL是個(gè)專業(yè)的圖形程序接口,是一個(gè)功能強(qiáng)大,調(diào)用方便的底層圖形庫。OpenGL的前身是SGI公司為其圖形工作站開發(fā)的IRIS GL。IRIS GL是一個(gè)工業(yè)標(biāo)準(zhǔn)的3D圖形軟件接口,功能雖然強(qiáng)大但是移植性不好,于是SGI公司便在IRIS GL的基礎(chǔ)上開發(fā)了OpenGL。OpenGL的英文全稱是“Open Graphics Library”,顧名思義,OpenGL便是“開放的圖形程序接口”。雖然DirectX在家用市場(chǎng)全面領(lǐng)先,但在專業(yè)高端繪圖領(lǐng)域,OpenGL是不能被取代的主角。
Open GL仍然是唯一能夠取代微軟對(duì)3D圖形技術(shù)的完全控制的API。它仍然具有一定的生命力,但是Silicon Graphics已經(jīng)不再以任何讓微軟不悅的方式推廣Open GL,因而它存在較高的風(fēng)險(xiǎn)。游戲開發(fā)人員是一個(gè)有著獨(dú)立思想的群體,很多重要的開發(fā)人員目前仍然在使用Open GL。因此,硬件開發(fā)商正在設(shè)法加強(qiáng)對(duì)它的支持。Direct3D目前還不能支持高端的圖形設(shè)備和專業(yè)應(yīng)用; Open GL在這些領(lǐng)域占據(jù)著統(tǒng)治地位。最后,開放源碼社區(qū)(尤其是Mesa項(xiàng)目)一直致力于為任何類型的計(jì)算機(jī)(無論它們是否使用微軟的操作系統(tǒng))提供Open GL支持。
今年08年正式公布OpenGL3.0版本。并且得到了,nv的支持,其官方網(wǎng)站上提供針對(duì)N卡的sdk下載。
什么是DirectX?
DirectX是一種應(yīng)用程序接口(API),它可讓以windows為平臺(tái)的游戲或多媒體程序獲得更高的執(zhí)行效率,加強(qiáng)3d圖形和聲音效果,并提供設(shè)計(jì)人員一個(gè)共同的硬件驅(qū)動(dòng)標(biāo)準(zhǔn),讓游戲開發(fā)者不必為每一品牌的硬件來寫不同的驅(qū)動(dòng)程序,也降低用戶安裝及設(shè)置硬件的復(fù)雜度。這樣說是不是有點(diǎn)不太明白,其實(shí)從字面意義上說,Direct就是直接的意思,而后邊的X則代表了很多的意思,從這一點(diǎn)上我們就可以看出DirectX的出現(xiàn)就是為了為眾多軟件提供直接服務(wù)的。
DirectX是由很多API組成的,按照性質(zhì)分類,可以分為四大部分,顯示部分、聲音部分、輸入部分和網(wǎng)絡(luò)部分。
顯示部分擔(dān)任圖形處理的關(guān)鍵,分為DirectDraw(DDraw)和 Direct3D(D3D),前者主要負(fù)責(zé)2D圖像加速。它包括很多方面:我們播放mpg、DVD電影、看圖、玩小游戲等等都是用的DDraw,你可以把它理解成所有劃線的部分都是用的DDraw。后者則主要負(fù)責(zé)3D效果的顯示,比如CS中的場(chǎng)景和人物、FIFA中的人物等等,都是使用了DirectX的 Direct3D。
OpenCL、OpenGL和DirectX之間不得不說的故事
業(yè)界對(duì)Apple的OpenCL的支持將成為它發(fā)展的重要因素,早在90年代中期,微軟就曾經(jīng)努力阻止OpenGL成為行業(yè)的標(biāo)準(zhǔn),以推行自己的DirectX顯卡軟件和游戲工具。微軟的Direct X起初的戰(zhàn)略是為了推動(dòng)DOS游戲開發(fā)者轉(zhuǎn)向Windows,從此之后它就被綁定在Windows下為PC游戲服務(wù),所以它僅支持Windows。
斷發(fā)布新版的DirectX也推動(dòng)了開發(fā)者轉(zhuǎn)向最新版的Windows,比如最新版的DirectX 10就帶來了不少Vista專屬游戲,從而推動(dòng)了Vista的銷量,然而它并未達(dá)到預(yù)期的效果,因?yàn)閂ista的速度阻礙了DirectX10游戲的市場(chǎng),開發(fā)者只能將目標(biāo)再次轉(zhuǎn)向XP。
OpenGL和Apple
OpenGL的前身是高端圖形工作站廠商SGI在80年代所開發(fā)的IRIS G,它在90年代初期成為了開源的標(biāo)準(zhǔn)。當(dāng)時(shí)微軟在它的Windows 95中發(fā)布了Direct3D,將它作為OpenGL的競(jìng)爭(zhēng)對(duì)手。而在90年代末,微軟曾經(jīng)和SGI進(jìn)行了Fahrenheit項(xiàng)目的開發(fā),試圖將兩者結(jié)合起來,但是沒有成功。之后微軟繼續(xù)開發(fā)DirectX并與GPU廠商合作,留下OpenGL任其發(fā)展。
OpenGL之后幾乎逐漸消失,直到90年代末Apple放棄了自己的QuickDraw 3D,將OpenGL作為Mac OS X的官方3D庫。Apple的系統(tǒng)給OpenGL程序帶來了不少擁護(hù)者。之后OpenGL正式被Linux采用,現(xiàn)在主流的游戲平臺(tái),包括PSP,PS3 和Wii都支持該技術(shù)。
但是微軟的Xbox360例外,它采用了自己的DirectX 圖形庫,而將OpenGL排除在外。如今OpenGL對(duì)DirectX來說比以前更有競(jìng)爭(zhēng)力了。而微軟計(jì)劃在Windows 7中的DirectX 11增加類似于OpenCL的技術(shù),以實(shí)現(xiàn)GPGPU運(yùn)算。但是Apple的OpenCL能更緊密地與OpenGL代碼協(xié)同工作,能帶來更廣泛的支持。 Apple還將OpenCL作為一個(gè)免費(fèi)的,開源的標(biāo)準(zhǔn),讓任何人都能參與到該平臺(tái)中來。
OpenGL和OpenCL設(shè)計(jì)的相似性,使開發(fā)者更易于開發(fā)。比如在OpenCL下進(jìn)行數(shù)據(jù)虛擬化計(jì)算,可以把相同的對(duì)象在OpenGL上進(jìn)行圖形渲染。同時(shí)OpenGL下的圖形渲染可以在OpenCL下進(jìn)行處理和轉(zhuǎn)換。
OpenCL得到了GPU廠商N(yùn)VIDIA和AMD的支持,同時(shí)支持Apple,SONY,任天堂的平臺(tái),還支持Linux和Windows,而且任何公司的開發(fā)者都可以參與到該技術(shù)的發(fā)展中來。