OpenGL编辑
OpenGL編輯
OpenGL(全寫Open Graphics Library)是個(gè)定義了一個(gè)跨編程語言、跨平臺的編程接口規(guī)格的專業(yè)的圖形程序接口。它用于三維圖象(二維的亦可),是一個(gè)功能強(qiáng)大,調(diào)用方便的底層圖形庫。 中文名 開放圖形庫(英文Open Graphics Library的縮寫) 外文名 Open Graphics Library 平????臺 Windows、類Unix、Linux、MacOS 是否開源 是 最近更新日期 2014年8月11日 軟件類別 開放庫文件目錄
1基本介紹
2發(fā)展現(xiàn)狀
3有關(guān)技術(shù)
4相關(guān)信息
1基本介紹編輯
[1]OpenGL? 是行業(yè)領(lǐng)域中最為廣泛接納的 2D/3D 圖形 API, 其自誕生至今已催生了各種計(jì)算機(jī)平臺及設(shè)備上的數(shù)千優(yōu)秀應(yīng)用程序。OpenGL? 是獨(dú)立于視窗操作系統(tǒng)或其它操作系統(tǒng)的,亦是網(wǎng)絡(luò)透明的。在包含CAD[2]、內(nèi)容創(chuàng)作、能源、娛樂、游戲開發(fā)、制造業(yè)、制藥業(yè)及虛擬現(xiàn)實(shí)等行業(yè)領(lǐng)域中,OpenGL? 幫助程序員實(shí)現(xiàn)在 PC、工作站、超級計(jì)算機(jī)等硬件設(shè)備上的高性能、極具沖擊力的高視覺表現(xiàn)力圖形處理軟件的開發(fā)。 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在家用市場全面領(lǐng)先,但在專業(yè)高端繪圖領(lǐng)域,OpenGL是不能被取代的主角。 OpenGL是個(gè)與硬件無關(guān)的軟件接口,可以在不同的平臺如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之間進(jìn)行移植。因此,支持OpenGL的軟件具有很好的移植性,可以獲得非常廣泛的應(yīng)用。由于OpenGL是圖形的底層圖形庫,沒有提供幾何實(shí)體圖元,不能直接用以描述場景。但是,通過一些轉(zhuǎn)換程序,可以很方便地將AutoCAD[2]、3DS/3DSMAX[3]等3D圖形設(shè)計(jì)軟件制作的DXF和3DS模型文件轉(zhuǎn)換成OpenGL的頂點(diǎn)數(shù)組。 在OpenGL的基礎(chǔ)上還有Open Inventor、Cosmo3D、Optimizer等多種高級圖形庫,適應(yīng)不同應(yīng)用。其中,Open Inventor應(yīng)用最為廣泛。該軟件是基于OpenGL面向?qū)ο蟮墓ぞ甙?#xff0c;提供創(chuàng)建交互式3D圖形應(yīng)用程序的對象和方法,提供了預(yù)定義的對象和用于交互的事件處理模塊,創(chuàng)建和編輯3D場景的高級應(yīng)用程序單元,有打印對象和用其它圖形格式交換數(shù)據(jù)的能力。 OpenGL的發(fā)展一直處于一種較為遲緩的態(tài)勢,每次版本的提高新增的技術(shù)很少,大多只是對其中部分做出修改和完善。1992年7月,SGI公司發(fā)布了OpenGL的1.0版本,隨后又與微軟公司共同開發(fā)了Windows NT版本的OpenGL,從而使一些原來必須在高檔圖形工作站上運(yùn)行的大型3D圖形處理軟件也可以在微機(jī)上運(yùn)用。1995年OpenGL的1.1版本面市,該版本比1.0的性能有許多提高,并加入了一些新的功能。其中包括改進(jìn)打印機(jī)支持,在增強(qiáng)元文件中包含OpenGL的調(diào)用,頂點(diǎn)數(shù)組的新特性,提高頂點(diǎn)位置、法線、顏色、色彩指數(shù)、紋理坐標(biāo)、多邊形邊緣標(biāo)識的傳輸速度,引入了新的紋理特性等等。OpenGL 1.5又新增了“OpenGL Shading Language”,該語言是“OpenGL 2.0”的底核,用于著色對象、頂點(diǎn)著色以及片斷著色技術(shù)的擴(kuò)展功能。 OpenGL 2.0標(biāo)準(zhǔn)的主要制訂者并非原來的SGI,而是逐漸在ARB中占據(jù)主動地位的3DLabs。2.0版本首先要做的是與舊版本之間的完整兼容性,同時(shí)在頂點(diǎn)與像素及內(nèi)存管理上與DirectX共同合作以維持均勢。OpenGL 2.0將由OpenGL 1.3的現(xiàn)有功能加上與之完全兼容的新功能所組成(如圖一)。借此可以對在ARB停滯不前時(shí)代各家推出的各種糾纏不清的擴(kuò)展指令集做一次徹底的精簡。此外,硬件可編程能力的實(shí)現(xiàn)也提供了一個(gè)更好的方法以整合現(xiàn)有的擴(kuò)展指令。 目前,隨著DirectX的不斷發(fā)展和完善,OpenGL的優(yōu)勢逐漸喪失,至今雖然已有3Dlabs提倡開發(fā)的2.0版本面世,在其中加入了很多類似于DirectX中可編程單元的設(shè)計(jì),但廠商和用戶的認(rèn)知程度并不高,未來的OpenGL發(fā)展前景迷茫。發(fā)展歷程
1992年7月,SGI公司發(fā)布了OpenGL的1.0版本,隨后又與微軟公司共同開發(fā)了Windows NT版本的OpenGL,從而使一些原來必須在高檔圖形工作站上運(yùn)行的大型3D圖形處理軟件也可以在微機(jī)上運(yùn)用。 1995年OpenGL的1.1版本面市,該版本較1.0性能提高許多,并加入了一些新的功能。包括提高頂點(diǎn)位置、法線、顏色、色彩指數(shù)、紋理坐標(biāo)、多邊形邊緣標(biāo)識的傳輸速度,引入了新的紋理特性等等。 1997年,Windows 95下3D游戲的大量涌現(xiàn),游戲開發(fā)公司迫切需要一個(gè)功能強(qiáng)大、兼容性好的3D圖形接口,而當(dāng)時(shí)微軟公司自己的3D圖形接口DirectX 3.0功能卻是很糟糕。因而以制作《雷神之錘》等經(jīng)典3D射擊游戲而著名的id公司同其它一些游戲開發(fā)公司一同強(qiáng)烈要求微軟在Windows 95中加入對OpenGL的支持。微軟公司最終在Windows 95的OSR2版和后來的Windows 版本中加入了對OpenGL的支持。這樣,不但許多支持OpenGL的電腦3D游戲得到廣泛應(yīng)用,而且許多在3D圖形設(shè)計(jì)軟件也可以運(yùn)用支持OpenGL標(biāo)準(zhǔn)的3D加速卡,大大提高其3D圖形的處理速度。 2003年的7月28日,SGI和ARB公布了OpenGL 1.5。OpenGL 1.5中包括OpenGL ARB的正式擴(kuò)展規(guī)格繪制語言“OpenGL Shading Language”。OpenGL 1.5的新功包括:頂點(diǎn)Buffer Object、Shadow功能、隱蔽查詢、非乘方紋理等。 2004年8月,OpenGL2.0版本發(fā)布~OpenGL 2.0標(biāo)準(zhǔn)的主要制訂者并非原來的SGI,而是逐漸在ARB中占據(jù)主動地位的3Dlabs。OpenGL2.0支持OpenGL Shading Language、新的shader擴(kuò)展特性以及其他多項(xiàng)增強(qiáng)特性。 2008年8月初Khronos工作組在Siggraph 2008大會上宣布了OpenGL 3.0圖形接口規(guī)范,GLSL1.30 shader語言和其他新增功能將再次對未來開放3D接口發(fā)展指明方向。 OpenGL 3.0 API開發(fā)代號為Longs Peak,和以往一樣,OpenGL 3.0仍然作為一個(gè)開放性和跨平臺的3D圖形接口標(biāo)準(zhǔn),在Shader語言盛行的今天,OGL3.0增加了新版本的shader語言:GLSL 1.30,可以充分發(fā)揮當(dāng)前可編程圖形硬件的潛能。同時(shí),OGL3.0還引入了一些新的功能,例如頂點(diǎn)矩陣對象,全幀緩存對象功能,32bit浮點(diǎn)紋理和渲染緩存,基于阻塞隊(duì)列的條件渲染,緊湊行半浮點(diǎn)頂點(diǎn)和像素?cái)?shù)據(jù),四個(gè)新壓縮機(jī)制等等。 2009年3月又公布了升級版新規(guī)范OpenGL 3.1,也是這套跨平臺免費(fèi)API有史以來的第九次更新。OpenGL 3.1將此前引入的OpenGL著色語言“GLSL”從1.30版升級到了1.40版,通過改進(jìn)程序增強(qiáng)了對最新可編程圖形硬件的訪問,還有更高效的頂點(diǎn)處理、擴(kuò)展的紋理功能、更彈性的緩沖管理等等。寬泛地講,OpenGL 3.1在3.0版的基礎(chǔ)上對整個(gè)API模型體系進(jìn)行了簡化,可大幅提高軟件開發(fā)效率。 2009年8月Khronos小組發(fā)布了OpenGL 3.2,這是一年以來OpenGL進(jìn)行的第三次重要升級。該版本仍然延續(xù)了OpenGL發(fā)展的方向讓圖形程序開發(fā)者能在多種操作系統(tǒng)和平臺下更好的利用新的GPU功能。OpenGL3.2版本提升了性能表現(xiàn)、改進(jìn)了視覺質(zhì)量、提高了幾何圖形處理速度,而且使Direct3D程序更容易移植為OpenGL。除OpenGL之外,Khronos還將其開發(fā)的其它標(biāo)準(zhǔn)進(jìn)行了協(xié)調(diào)改進(jìn),以求可以在更廣泛的領(lǐng)域提供強(qiáng)大的圖形功能和計(jì)算生態(tài)系統(tǒng),這些標(biāo)準(zhǔn)包括用于并行計(jì)算的OpenCL、用于移動3D圖形開發(fā)的OpenGL ES和用于網(wǎng)絡(luò)3D開發(fā)的WebGL。 2010年7月26日發(fā)布OpenGL 4.1和OpenGL OpenGL Shading Language 4.10。OpenGL4.1提高視覺密集型應(yīng)用OpenCL?的互操作性,并繼續(xù)加速計(jì)算剖面為核心的支持和兼容性第一次推出的OpenGL 3.2,使開發(fā)人員能夠使用一個(gè)簡化的API或保留向后兼容現(xiàn)有的OpenGL代碼,這取決于他們的市場需求。 Khronos旗下的OpenGL ARB(Architecture Review Board)工作組推出了GLSL 1.5OpenGLShading Language(OpenGL著色語言)的升級版,以及在OpenGL3.2框架下推出了兩個(gè)新功能,可以讓開發(fā)者在開發(fā)新程序時(shí)能夠在使用流水線內(nèi)核特性或兼容性特性之間做出選擇,其中兼容性特性會提供與舊版OpenGL之間的兼容性。 2011年8月9日在溫哥華舉行的SIGGRAPH 2011大會上Khronos發(fā)布了新的OpenGL 4.2標(biāo)準(zhǔn)細(xì)節(jié),對于支持現(xiàn)有硬件的API加入了部分新的支持特性。和OpenGL 4.1一樣,OpenGL 4.2主要應(yīng)用于DX11級別硬件如NVIDIA GeForce 400/500,Radeon HD 5000/6000系列顯卡,不過NVIDIA的開發(fā)者社區(qū)之前曾經(jīng)表示部分特性可通過擴(kuò)展功能在最老支持OpenGL2/DX9級別的硬件上實(shí)現(xiàn)。特點(diǎn)功能
OpenGL是一個(gè)開放的三維圖形軟件包,它獨(dú)立于窗口系統(tǒng)和操作系統(tǒng),以它為基礎(chǔ)開發(fā)的應(yīng)用程序可以十分方便地在各種平臺間移植;OpenGL可以與Visual C++緊密接口,便于實(shí)現(xiàn)機(jī)械手的有關(guān)計(jì)算和圖形算法,可保證算法的正確性和可靠性;OpenGL使用簡便,效率高。它具有七大功能: 1.建模:OpenGL圖形庫除了提供基本的點(diǎn)、線、多邊形的繪制函數(shù)外,還提供了復(fù)雜的三維物體(球、錐、多面體、茶壺等)以及復(fù)雜曲線和曲面繪制函數(shù)。 2.變換:OpenGL圖形庫的變換包括基本變換和投影變換。基本變換有平移、旋轉(zhuǎn)、縮放、鏡像四種變換,投影變換有平行投影(又稱正射投影)和透視投 影兩種變換。其變換方法有利于減少算法的運(yùn)行時(shí)間,提高三維圖形的顯示速度。 3.顏色模式設(shè)置:OpenGL顏色模式有兩種,即RGBA模式和顏色索引(Color Index)。 4.光照和材質(zhì)設(shè)置:OpenGL光有自發(fā)光(Emitted Light)、環(huán)境光(Ambient Light)、漫反射光(Diffuse Light)和高光(Specular Light)。材質(zhì)是用光反射率來表示。場景(Scene)中物體最終反映到人眼的顏色是光的紅綠藍(lán)分量與材質(zhì)紅綠藍(lán)分量的反射率相乘后形成的顏色。 5:紋理映射(Texture Mapping)。利用OpenGL紋理映射功能可以十分逼真地表達(dá)物體表面細(xì)節(jié)。 6:位圖顯示和圖象增強(qiáng)圖象功能除了基本的拷貝和像素讀寫外,還提供融合(Blending)、抗鋸齒(反走樣)(Antialiasing)和霧(fog)的特殊圖象效果處理。以上三條可使被仿真物更具真實(shí)感,增強(qiáng)圖形顯示的效果。 7:雙緩存動畫(Double Buffering)雙緩存即前臺緩存和后臺緩存,簡言之,后臺緩存計(jì)算場景、生成畫面,前臺緩存顯示后臺緩存已畫好的畫面。 此外,利用OpenGL還能實(shí)現(xiàn)深度暗示(Depth Cue)、運(yùn)動模糊(Motion Blur)等特殊效果。從而實(shí)現(xiàn)了消隱算法。OpenGL設(shè)備運(yùn)用,目前瑞芯微2918芯片和英偉達(dá)芯片Tegra2 就是采用OpenGL 2.0技術(shù)進(jìn)行圖形處理,而基于瑞芯微2918芯片方案代表是臺電T760和微蜂X7平板電腦所采用到。高級功能
OpenGL被設(shè)計(jì)為只有輸出的,所以它只提供渲染功能。核心API沒有窗口系統(tǒng)、音頻、打印、鍵盤/鼠標(biāo)或其它輸入設(shè)備的概念。雖然這一開始看起來像是一種限制,但它允許進(jìn)行渲染的代碼完全獨(dú)立于他運(yùn)行的操作系統(tǒng),允許跨平臺開發(fā)。然而,有些整合于原生窗口系統(tǒng)的東西需要允許和宿主系統(tǒng)交互。這通過下列附加API實(shí)現(xiàn): * GLX - X11(包括透明的網(wǎng)絡(luò)) * WGL - Microsoft Windows * AGL - Apple MacOS 另外,GLUT庫能夠以可移植的方式提供基本的窗口功能。規(guī)范發(fā)布
2012年8月7日,Khronos Group組織也公布了桌面版OpenGL的最新版本4.3,也算是給這個(gè)3D API二十歲生日的最好禮物。 1992年,OpenGL 1.0誕生,此后歷經(jīng)二十年發(fā)展,先后衍生了四個(gè)世代,功能日漸強(qiáng)大,普及范圍也是越來越廣。雖然它沒有微軟DirectX在游戲中那么風(fēng)光,但也在專業(yè)圖形等領(lǐng)域成為眾多開發(fā)者的首選,而且陸續(xù)衍生了OpenGL ES、OpenCL、WebGL等一幫同門師兄弟,生態(tài)系統(tǒng)日臻完善。2發(fā)展現(xiàn)狀編輯
OpenGL仍然是唯一能夠取代微軟對3D圖形技術(shù)的完全控制的API。它仍然具有一定的生命力,但是Silicon Graphics已經(jīng)不再以任何讓微軟不悅的方式推廣OpenGL,因而它存在較高的風(fēng)險(xiǎn)。游戲開發(fā)人員是一個(gè)有著獨(dú)立思想的群體,很多重要的開發(fā)人員目前仍然在使用OpenGL。因此,硬件開發(fā)商正在設(shè)法加強(qiáng)對它的支持。Direct3D目前還不能支持高端的圖形設(shè)備和專業(yè)應(yīng)用; OpenGL在這些領(lǐng)域占據(jù)著統(tǒng)治地位。最后,開放源碼社區(qū)(尤其是Mesa項(xiàng)目)一直致力于為任何類型的計(jì)算機(jī)(無論它們是否使用微軟的操作系統(tǒng))提供OpenGL支持。 目前,國外的三維游戲開發(fā)技術(shù),從創(chuàng)意、策劃、研究開發(fā)與實(shí)現(xiàn),到游戲的運(yùn)營與維護(hù),都有大量的知識值得學(xué)習(xí)和摸索。由于 Linux 操作系統(tǒng)平臺的大力推廣,基于Linux 的各種應(yīng)用軟件也不斷壯大,因此基于跨平臺圖形庫的跨平臺三維游戲開發(fā)也越來越受重視。OpenGL(open graphics library)是一種獨(dú)立的平臺無關(guān)的三維圖形開發(fā)庫,在各種語言下進(jìn)行主框架開發(fā)并結(jié)合應(yīng)用OpenGL 函數(shù)都可以開發(fā)出三維游戲。但是由于框架開發(fā)的平臺相關(guān)性使游戲無法跨平臺編譯運(yùn)行,因此glut+OpenGL 的方式成了一種很好的選擇。但是在對復(fù)雜框架和各種媒體的支持方面,glut 并不理想。在Linux 下可以采用FLTK 等框架平臺技術(shù)實(shí)現(xiàn)包括按鈕在內(nèi)的比較復(fù)雜的框架功能,但是需要專門的Linux 開發(fā)環(huán)境,眾多的Window 環(huán)境下的KDE 愛好者明顯對此無法適從。相反,SDL(Simple DirectMedia Layer)作為免費(fèi)的跨平臺多媒體應(yīng)用編程接口,已經(jīng)被人們廣泛用于開發(fā)二維游戲,其優(yōu)秀的消息框架支持、文件支持和聲音支持等都使得它成為能與微軟DirectX 匹敵的最為成熟的技術(shù)之一。 截止2012年8月7日,Khronos Group公布了最新的OpenGL 4.3規(guī)范。3有關(guān)技術(shù)編輯
擴(kuò)展
當(dāng)獨(dú)立廠商創(chuàng)建一種新技術(shù)時(shí),OpenGL標(biāo)準(zhǔn)允許它們通過“擴(kuò)展”的方法提供所擴(kuò)展的功能。然后一個(gè)擴(kuò)展就分成兩部分發(fā)布:包含擴(kuò)展函數(shù)原型的頭文件和作為廠商的設(shè)備驅(qū)動。每個(gè)廠商有一個(gè)用于命名它們的新函數(shù)和常量的字母縮寫。例如,NVIDIA的縮寫(“NV”)用于定義它們的專有函數(shù)“glCombinerPara- meterfvNV()”和它們的常量“GL_NORMAL_MAP_NV”。如果多于一個(gè)廠商同意實(shí)現(xiàn)相同的擴(kuò)展功能,那么就用縮寫“EXT”。進(jìn)一步,架構(gòu)評審委員會可能“祝福”這個(gè)擴(kuò)展,那么這就被稱為一個(gè)“標(biāo)準(zhǔn)擴(kuò)展”,使用縮寫“ARB”。第一個(gè)ARB擴(kuò)展是GL_ARB_multitexture。根據(jù)官方擴(kuò)展提升路徑,多紋理不再是可選實(shí)現(xiàn)的ARB擴(kuò)展,它已經(jīng)是OpenGL 1.4以后的核心API的一部分。 幾個(gè)庫創(chuàng)建在OpenGL之上,提供了OpenGL本身沒有的功能: 1)GLU 2)GLUT 3)GLUI 4)GLEW 5)GLEE[4] 6)FREEGLUT(GLUT已經(jīng)于1998年不再更新了。于是就有了freeglut) 特別是,OpenGL Performer庫——由SGI開發(fā)并可以在IRIX、Linux和Microsoft Windows的一些版本上使用,構(gòu)建于OpenGL,可以創(chuàng)建實(shí)時(shí)可視化仿真程序。 當(dāng)開發(fā)者需要使用最新的OpenGL擴(kuò)展時(shí),他們往往需要使用GLEW或者是GLEE庫提供的功能,可以在程序的運(yùn)行期判斷當(dāng)前硬件是否支持相關(guān)的擴(kuò)展,防止程序崩潰甚至造成硬件損壞。綁定
為了加強(qiáng)它的多語言和多平臺特性,已經(jīng)用很多語言開發(fā)了OpenGL的各種綁定和移植。最值得注意的是,Java3D庫已經(jīng)可以利用OpenGL(另一個(gè)選擇可能是DirectX)作為它的硬件加速了。OpenGL官方網(wǎng)頁[5]列出了用于Java、Fortran90、Perl、Pike、Python、Ada和Visual Basic的多個(gè)綁定。規(guī)范
Khronos Group在2009年3月又公布了升級版新規(guī)范OpenGL 3.1,也是這套跨平臺免費(fèi)API有史以來的第九次更新。 OpenGL 3.1將此前引入的OpenGL著色語言“GLSL”從1.30版升級到了1.40版,通過改進(jìn)程序增強(qiáng)了對最新可編程圖形硬件的訪問,還有更高效的頂點(diǎn)處理、擴(kuò)展的紋理功能、更彈性的緩沖管理等等。寬泛地講,OpenGL 3.1在3.0版的基礎(chǔ)上對整個(gè)API模型體系進(jìn)行了簡化,可大幅提高軟件開發(fā)效率。 OpenGL 3.1主要新特性:Texture Buffer Objects(紋理緩沖對象)、Uniform Buffer Objects(統(tǒng)一緩沖對象)、Signed Normalized Textures(符號正常化紋理)、Primitive Restart(基本元素重啟)、Instancing(實(shí)例化)、CopyBuffer API(拷貝緩沖接口)…… 與OpenGL 3.1規(guī)范同步,OpenGL架構(gòu)評審委員會(ARB)也發(fā)布了一個(gè)兼容性擴(kuò)展,能讓開發(fā)人員在訪問OpenGL 3.1里已經(jīng)刪除的OpenGL 1.x/2.x功能,確保應(yīng)用程序的全面向下兼容性。 OpenGL 3.1公布后,業(yè)界圖形廠商很快予以了大力支持。AMD OpenGL主管Suki Samra表示:“AMD全面用戶OpenGL API,會在今后的Radeon和FirePro產(chǎn)品驅(qū)動程序中支持OpenGL 3.1。”NVIDIA市場營銷副總裁Dan Vivoli表示:“NVIDIA承諾盡快部署OpenGL 3.1,我們也很自豪地在規(guī)范公布同一天放出了自己的測試版驅(qū)動程序。” 市場調(diào)研機(jī)構(gòu)Jon Peddie Research預(yù)測,OpenGL 3.1規(guī)范圖形硬件的安裝規(guī)模將超過1億。AMD、NVIDIA、S3 Graphics的顯卡驅(qū)動目前都已經(jīng)支持OpenGL 3.0。4相關(guān)信息編輯
1995年至1996年,微軟實(shí)行了一項(xiàng)新計(jì)劃,以支持在Windows95上運(yùn)行游戲,目標(biāo)是把市場擴(kuò)展到被任天堂和世嘉控制的游戲領(lǐng)域。然而,微軟不想用已經(jīng)在NT上提供的OpenGL技術(shù)。微軟收購了Rendermorphics,Ltd.并得到他的被稱作RealityLab的3D API。經(jīng)重新整理,微軟發(fā)布了新的3D API——Direct3D。 微軟,推行Direct3D,凍結(jié)OpenGL! 微軟當(dāng)時(shí)拒絕了在Window95上支持OpenGL。不止如此,微軟采取異常手段收回對OpenGL的MCD驅(qū)動接口的支持,以致硬件廠商不得不放棄已經(jīng)進(jìn)入最后測試的OpenGL驅(qū)動。微軟的市場部門開始向游戲開發(fā)商、硬件廠商、新聞出版機(jī)構(gòu)推銷Direct3D,同時(shí)排斥OpenGL。 API之戰(zhàn)! Silicon Graphics和很多OpenGL用戶都依賴OpenGL創(chuàng)新且高性能的技術(shù)。但很明顯微軟打算用Direct3D代替OpenGL,盡管D3D有很多問題而且不能像OpenGL那樣被硬件廠商擴(kuò)展。Silicon Graphics決定在1996 SIGGRAPH會議上作一項(xiàng)演示。演示證明OpenGL至少和D3D一樣快,從而駁倒微軟的市場論調(diào)。因?yàn)镺penGL是業(yè)界公認(rèn)標(biāo)準(zhǔn),比D3D功能豐富,而且圖像質(zhì)量要高一些,所以演示在計(jì)算機(jī)圖形和游戲開發(fā)社區(qū)導(dǎo)致了激烈論戰(zhàn)。 游戲開發(fā)者要求OpenGL和D3D站在同等地位! 當(dāng)技術(shù)和市場問題暴露,強(qiáng)烈的支持OpenGL行動開始了。Doom的開發(fā)者John Carmack聲明拒絕D3D,Chris Hecker在游戲開發(fā)雜志上發(fā)表了兩套API的全面分析,以微軟應(yīng)放棄D3D為結(jié)論。游戲開發(fā)者先后兩次向微軟遞交請?jiān)笗5谝淮斡?6名首席游戲開發(fā)者要求微軟發(fā)行OpenGL MCD驅(qū)動,但未成功,因?yàn)闀孫penGL與D3D競爭。第二次的公開信由254人簽名開始,截止時(shí)達(dá)到1400人。微軟的回答仍是重申舊市場立場。盡管請?jiān)刚咔宄囊髢商譇PI同等競爭以促進(jìn)發(fā)展,微軟卻以增加D3D的投資、更加減少OpenGL的投資為回應(yīng)。 Fahrenheit——D3D與OpenGL的合并? Silicon Graphics,Microsoft, HP,Intel達(dá)成協(xié)議聯(lián)合開發(fā)下一代3D API——Fahrenheit。但不了了之,因?yàn)槲④浀拇蛩闶前袿penGL的技術(shù)用到D3D里并且以此之名驅(qū)除OpenGL的威脅。(估計(jì)DirectX 8 Graphics即是剩下微軟獨(dú)自開發(fā)的Fahrenheit,吸收了OpenGL的很多東西。) OpenGL豪氣不減當(dāng)年! OpenGL依然是唯一能與微軟單獨(dú)控制的D3D對立的API,盡管Silicon Graphics不再以任何微軟不能接受的方式推行OpenGL。游戲開發(fā)這是獨(dú)立的,并且很多關(guān)鍵人物在用OpenGL,因此,硬件廠商正努力提高對其支持。D3D仍不能支持高端圖像和專業(yè)應(yīng)用,而OpenGL主宰著這些土地。在開放原碼社區(qū),Mesa項(xiàng)目正提供獨(dú)立于微軟的OpenGL驅(qū)動。 譯者注:表面上好像D3D比OpenGL支持更多的功能,其實(shí)由于D3D不支持硬件擴(kuò)展,如硬件全景陰影,硬件渲染順序無關(guān)半透明材質(zhì)等新技術(shù)根本無法使用,而D3D(特指D3D8)本身提供的功能只有一小部分能在使用HAL且硬件不支持時(shí)模擬,你要用大量代碼分析硬件能力和采取不同策略。總結(jié)
- 上一篇: 海南大学植物代谢组学技术开发与创新应用课
- 下一篇: gtk编辑