Microsoft DirectX 是這樣一組技術(shù):它們旨在使基于Windows 的計(jì)算機(jī)成為運(yùn)行和顯示具有豐富多媒體元素(例如全色圖形、視頻、3D 動(dòng)畫和豐富音頻)的應(yīng)用程序的理想平臺(tái)。DirectX 包括安全和性能更新程序,以及許多涵蓋所有技術(shù)的新功能。應(yīng)用程序可以通過使用DirectX API 來訪問這些新功能。
功用
DirectX加強(qiáng)3D圖形和聲音效果,并提供設(shè)計(jì)人員一個(gè)共同的硬件驅(qū)動(dòng)標(biāo)準(zhǔn),讓游戲開發(fā)者不必為每一品牌的硬件來寫不同的驅(qū)動(dòng)程序,也降低了用戶安裝及設(shè)置硬件的復(fù)雜度。
從字面意義上說,Direct就是直接的意思,而后邊的X則代表了很多的意思,從這一點(diǎn)上可以看出DirectX的出現(xiàn)就是為了為眾多軟件提供直接服務(wù)的。
舉例來說,以前在DOS下骨灰級(jí)玩家玩游戲時(shí),并不是安裝上就可以玩了,他們往往首先要設(shè)置聲卡的品牌和型號(hào),然后還要設(shè)置IRQ(中斷)、I/O(輸入與輸出)、DMA(存取模式),如果哪項(xiàng)設(shè)置的不對(duì),那么游戲聲音就發(fā)不出來。這部分的設(shè)置不僅讓玩家傷透腦筋,對(duì)游戲開發(fā)者來說就更為頭痛。為了讓游戲能夠在眾多電腦中正確運(yùn)行,開發(fā)者必須在游戲制作之初,把市面上所有聲卡硬件數(shù)據(jù)都收集過來,然后根據(jù)不同的 API(應(yīng)用編程接口)來寫不同的驅(qū)動(dòng)程序。這對(duì)于游戲制作公司來說,是很難完成的,所以在當(dāng)時(shí)多媒體游戲很少。微軟正是看到了這個(gè)問題,為眾廠家推出了一個(gè)共同的應(yīng)用程序接口——DirectX。只要游戲是依照Directx來開發(fā)的,不管顯卡、聲卡型號(hào)如何,統(tǒng)統(tǒng)都能玩,而且還能發(fā)揮最佳的效果。當(dāng)然,前提是使用的顯卡、聲卡的驅(qū)動(dòng)程序必須支持DirectX才行。
組成
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。
聲音部分
聲音部分中最主要的API是DirectSound,除了播放聲音和處理混音之外,還加強(qiáng)了3d音效,并提供了錄音功能。我們前面所舉的聲卡兼容的例子,就是利用了DirectSound來解決的。
輸入部分
輸入部分DirectInput可以支持很多的游戲輸入設(shè)備,它能夠讓這些設(shè)備充分發(fā)揮最佳狀態(tài)和全部功能。除了鍵盤和鼠標(biāo)之外還可以連接手柄、搖桿、模擬器等。
網(wǎng)絡(luò)部分
網(wǎng)絡(luò)部分DirectPlay主要就是為了具有網(wǎng)絡(luò)功能游戲而開發(fā)的,提供了多種連接方式,TCP/IP,IPX,Modem,串口等等,讓玩家可以用各種連網(wǎng)方式來進(jìn)行對(duì)戰(zhàn),此外也提供網(wǎng)絡(luò)對(duì)話功能及保密措施。
分類
DirectX并不是一個(gè)單純的圖形API,它是由微軟公司開發(fā)的用途廣泛的API,它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多個(gè)組件,它提供了一整套的多媒體接口方案。只是其在3D圖形方面的優(yōu)秀表現(xiàn),讓它的其它方面顯得暗淡無光。DirectX開發(fā)之初是為了彌補(bǔ)Windows 3.1系統(tǒng)對(duì)圖形、聲音處理能力的不足,而今已發(fā)展成為對(duì)整個(gè)多媒體系統(tǒng)的各個(gè)方面都有決定性影響的接口。DirectX 是一組低級(jí)“應(yīng)用程序編程接口(API)”,可為 Windows 程序提供高性能的硬件加速多媒體支持。Windows 支持DirectX 8.0,它能增強(qiáng)計(jì)算機(jī)的多媒體功能。使用DirectX 可訪問顯卡與聲卡的功能,從而使程序可提供逼真的三維(3D) 圖形與令人如醉如癡的音樂與聲音效果。DirectX 使程序能夠輕松確定計(jì)算機(jī)的硬件性能,然后設(shè)置與之匹配的程序參數(shù)。該程序使得多媒體軟件程序能夠在基于Windows 的具有DirectX 兼容硬件與驅(qū)動(dòng)程序的計(jì)算機(jī)上運(yùn)行,同時(shí)可確保多媒體程序能夠充分利用高性能硬件。DirectX 包含一組API,通過它能訪問高性能硬件的高級(jí)功能,如三維圖形加速芯片和聲卡。這些 API 控制低級(jí)功能(其中包括二維(2D)圖形加速)、支持輸入設(shè)備(如游戲桿、鍵盤和鼠標(biāo))并控制著混音及聲音輸出。構(gòu)成DirectX 的下列組件支持低級(jí)功能:Microsoft DirectDraw Microsoft DirectDraw API 支持快速訪問計(jì)算機(jī)視頻適配器的加速硬件功能。它支持在所有視頻適配器上顯示圖形的標(biāo)準(zhǔn)方法,并且使用加速驅(qū)動(dòng)程序時(shí)可以更快更直接地訪問。DirectDraw 為程序(如游戲和二維圖形程序包)以及Windows系統(tǒng)組件(如數(shù)字視頻編解碼器)提供了一種獨(dú)立于設(shè)備之外的方法來訪問特定顯示設(shè)備的功能,而不要求用戶提供設(shè)備功能的其它信息。
Microsoft Direct3D Microsoft Direct3D API (Direct3D) :為大多數(shù)新視頻適配器內(nèi)置的3-D 調(diào)色功能提供界面。Direct3D 是一種低級(jí)的3-D API,它為軟件程序提供一種獨(dú)立于設(shè)備之外的方法以便與加速器硬件進(jìn)行有效而強(qiáng)大的通信。Direct3D 包含專用CPU指令集支持,從而可為新型計(jì)算機(jī)提供進(jìn)一步加速支持。
Microsoft DirectSound Microsoft DirectSound API :為程序和音頻適配器的混音、聲音播放和聲音捕獲功能之間提供了鏈接。DirectSound 為多媒體軟件程序提供低延遲混合、硬件加速以及直接訪問聲音設(shè)備等功能。維護(hù)與現(xiàn)有設(shè)備驅(qū)動(dòng)程序的兼容性時(shí)提供該功能。
Microsoft DirectMusic Microsoft DirectMusic API :是DirectX 的交互式音頻組件。與捕獲和播放數(shù)字聲音樣本的DirectSound API 不同, DirectMusic 處理數(shù)字音頻以及基于消息的音樂數(shù)據(jù),這些數(shù)據(jù)是通過聲卡或其內(nèi)置的軟件合成器轉(zhuǎn)換成數(shù)字音頻的。DirectMusic API 支持以“樂器數(shù)字界面(MIDI)”格式進(jìn)行輸入,也支持壓縮與未壓縮的數(shù)字音頻格式。DirectMusic 為軟件開發(fā)人員提供了創(chuàng)建令人陶醉的動(dòng)態(tài)音軌的能力,以響應(yīng)軟件環(huán)境中的各種更改,而不只是用戶直接輸入更改。
Microsoft DirectInput Microsoft DirectInput API :為游戲提供高級(jí)輸入功能并能處理游戲桿以及包括鼠標(biāo)、鍵盤和強(qiáng)力反饋游戲控制器在內(nèi)的其它相關(guān)設(shè)備的輸入。
Microsoft DirectPlay Microsoft DirectPlay API:支持通過調(diào)制解調(diào)器、Internet 或局域網(wǎng)連接游戲。DirectPlay 簡(jiǎn)化了對(duì)通信服務(wù)的訪問,并提供了一種能夠使游戲彼此通信的方法而不受協(xié)議或聯(lián)機(jī)服務(wù)的限制。DirectPlay 提供了多種游戲服務(wù),可簡(jiǎn)化多媒體播放器游戲的初始化,同時(shí)還支持可靠的通信協(xié)議以確保重要游戲數(shù)據(jù)在網(wǎng)絡(luò)上不會(huì)丟失。DirectPlay 8.0 的新功能即支持通過網(wǎng)絡(luò)進(jìn)行語音通信,從而可大大提高基于多媒體播 放器小組的游戲的娛樂性,同時(shí)該組件還通過提供與玩游戲的其他人對(duì)話的功能而使團(tuán)體游戲更具魅力。
Microsoft DirectShow Microsoft DirectShow API:提供了可在您的計(jì)算機(jī)與Internet 服務(wù)器上進(jìn)行高品質(zhì)捕獲與回放多媒體文件的功能。 DirectShow 支持各種音頻與視頻格式,包括“高級(jí)流式格式(ASF)”、“音頻-視頻交錯(cuò) (AVI)”、“數(shù)字視頻(DV)”、“動(dòng)畫專家組 (MPEG)”、“MPEG 音頻層3 (MP3)”、“Windows 媒體音頻/視頻(WMA/WMV)”以及 WAV 文件。DirectShow 還具有視頻捕獲、DVD 回放、視頻編輯與混合、硬件加速視頻解碼以及調(diào)諧廣播模擬與數(shù)字電視信號(hào)等功能。
掌握
如何來學(xué)習(xí)它呢?
Direct身為一種運(yùn)算規(guī)則,其自身的運(yùn)行環(huán)境必然是有嚴(yán)格規(guī)定的,也就是說Direct是獨(dú)為Windows服務(wù)的一種規(guī)則。那它的表達(dá)環(huán)境就是在英文中。而非中。所以要想理解Direct并且靈活運(yùn)用,而并非僅僅理解這句話的構(gòu)成,而是要徹底剖析英文的語言規(guī)律,也就是Windows的運(yùn)行原理,Windows自身輸入輸出的方式。在這個(gè)基礎(chǔ)上要理解Direct這個(gè)規(guī)則自然是水到渠成。
那是不是說就不用去研究Direct了?
并非如此,但是在了解根本原理的基礎(chǔ)上去觀察Direct代碼上的結(jié)構(gòu)會(huì)很輕松。這里要說的就是Direct自身很強(qiáng)大但學(xué)習(xí)起來并非很難,難在于原理的研究,不僅要看智商,更主要還要有耐心,幾千頁(yè)的原理并不是一年半載能看完的。研究完這些,至于語法上的規(guī)則那就不值一提了。
Direct最好從基礎(chǔ)原理開始研究,然而原理卻如此之復(fù)雜,難道Direct沒法去學(xué)了?
這句話也不對(duì)。當(dāng)有一個(gè)新事物來到你面前時(shí),你要從兩個(gè)方面開始研究,一個(gè)是表面現(xiàn)象,也就是Direct的語言的規(guī)則與使用習(xí)慣、方法等。另一方面就是從已知條件中去推導(dǎo)出這個(gè)現(xiàn)象。意思是要從原理和代碼兩方面入手,從代碼入手時(shí)記住了代碼的習(xí)慣。緊接著了解這一點(diǎn)原理幫助自己去記憶,也能很快理解是怎么回事。也就是說我們雖然不贊同背代碼,但也不能一點(diǎn)不記,我們雖然很贊同從原理入手,但從實(shí)際考慮, 還是希望各位能量力而行。
整體來講學(xué)Direct還是要有一定編程基礎(chǔ)的,不建議一上來就學(xué)Direct,Direct畢竟是一個(gè)比較高深的東西。還是建議您對(duì)C++、Dos等一些語言比較精通的時(shí)候再回頭研究Direct。
當(dāng)然也不是不可能,例如3Ds Max就是基于Direct的。做個(gè)模型、圖像、動(dòng)畫還是可以的。當(dāng)然也要看你從什么角度去學(xué)習(xí)了。
歷史
DirectX 1.0
第一代的DirectX很不成功,推出時(shí)眾多的硬件均不支持,當(dāng)時(shí)基本都采用專業(yè)圖形API-OpenGL,缺乏硬件的支持成了其流行的最大障礙。
DirectX 1.0版本是第一個(gè)可以直接對(duì)硬件信息進(jìn)行讀取的程序。它提供了更為直接的讀取圖形硬件的性能(比如:顯示卡上的塊移動(dòng)功能)以及基本的聲音和輸入設(shè)備功能(函數(shù)),使開發(fā)的游戲能實(shí)現(xiàn)對(duì)二維(2D)圖像進(jìn)行加速。第一代DirectX不包括所有的3D功能,還處于一個(gè)初級(jí)階段。
DirectX 2.0
DirectX 2.0在二維圖形方面做了些改進(jìn),增加了一些動(dòng)態(tài)效果,采用了Direct 3D的技術(shù)。這樣DirectX 2.0與DirectX 1.0有了相當(dāng)大的不同。在DirectX 2.0中,采用了“平滑模擬和RGB模擬”兩種模擬方式對(duì)三維(3D)圖像進(jìn)行加速計(jì)算的。DirectX 2.0同時(shí)也采用了更加友好的用戶設(shè)置程序并更正了應(yīng)用程序接口的許多問題。從DirectX 2.0開始,整個(gè)DirectX的設(shè)計(jì)架構(gòu)雛形就已基本完成。
DirectX 3.0
DirectX 3.0的推出是在1997年最后一個(gè)版本的Windows95發(fā)布后不久,此時(shí)3D游戲開始深入人心,DirectX也逐漸得到軟硬件廠商的認(rèn)可。97年時(shí)應(yīng)用程序接口標(biāo)準(zhǔn)共有三個(gè),分別是專業(yè)的OpenGL接口,微軟的DirectX D接口和3DFX公司的Glide接口。而那時(shí)的3DFX公司是最為強(qiáng)大的顯卡制造商,它的Glide接口自然也受到最廣泛的應(yīng)用,但隨著3DFX公司的沒落,Voodoo顯卡的衰敗,Glide接口才逐漸消失了。
DirectX 3.0是DirectX 2.0的簡(jiǎn)單升級(jí)版,它對(duì)DirectX 2.0的改動(dòng)并不多。包括對(duì)DirectSound(針對(duì)3D聲音功能)和DirectPlay(針對(duì)游戲/網(wǎng)絡(luò))的一些修改和升級(jí)。DirectX 3.0集成了較簡(jiǎn)單的3D效果,還不是很成熟。
DirectX 5.0
微軟公司并沒有推出DirectX 4.0,而是直接推出了DirectX 5.0。此版本對(duì)Direct3D做出了很大的改動(dòng),加入了霧化效果、Alpha混合等3D特效,使3D游戲中的空間感和真實(shí)感得以增強(qiáng),還加入了S3的紋理壓縮技術(shù)。
同時(shí),DirectX 5.0在其它各組件方面也有加強(qiáng),在聲卡、游戲控制器方面均做了改進(jìn),支持了更多的設(shè)備。因此,DirectX發(fā)展到DirectX 5.0才真正走向了成熟。此時(shí)的DirectX性能完全不遜色于其它3D API,而且大有后來居上之勢(shì)。
DirectX 6.0
DirectX 6.0推出時(shí),其最大的競(jìng)爭(zhēng)對(duì)手之一Glide,已逐步走向了沒落,而DirectX則得到了大多數(shù)廠商的認(rèn)可。DirectX 6.0中加入了雙線性過濾、三線性過濾等優(yōu)化3D圖像質(zhì)量的技術(shù),游戲中的3D技術(shù)逐漸走入成熟階段。
DirectX 7.0
DirectX 7.0最大的特色就是支持T&L,中文名稱是“坐標(biāo)轉(zhuǎn)換和光源”。3D游戲中的任何一個(gè)物體都有一個(gè)坐標(biāo),當(dāng)此物體運(yùn)動(dòng)時(shí),它的坐標(biāo)發(fā)生變 化,這指的就是坐標(biāo)轉(zhuǎn)換;3D游戲中除了場(chǎng)景+物體還需要燈光,沒有燈光就沒有3D物體的表現(xiàn),無論是實(shí)時(shí)3D游戲還是3D影像渲染,加上燈光的3D渲染是最消耗資源的。雖然OpenGL中已有相關(guān)技術(shù),但此前從未在民用級(jí)硬件中出現(xiàn)。
在T&L問世之前,位置轉(zhuǎn)換和燈光都需要CPU來計(jì)算,CPU速度越快,游戲表現(xiàn)越流暢。使用了T&L功能后,這兩種效果的計(jì)算用顯示卡的GPU來計(jì)算,這樣就可以把CPU從繁忙的勞動(dòng)中解脫出來。換句話說,擁有T&L顯示卡,使用DirectX 7.0,即使沒有高速的CPU,同樣能流暢的跑3D游戲。
DirectX 8.0
DirectX 8.0的推出引發(fā)了一場(chǎng)顯卡革命,它首次引入了“像素渲染”概念,同時(shí)具備像素渲染引擎(Pixel Shader)與頂點(diǎn)渲染引擎(Vertex Shader),反映在特效上就是動(dòng)態(tài)光影效果。同硬件T&L僅僅實(shí)現(xiàn)的固定光影轉(zhuǎn)換相比,VS和PS單元的靈活性更大,它使GPU真正成為了可編程的處理器。這意味著程序員可通過它們實(shí)現(xiàn)3D場(chǎng)景構(gòu)建的難度大大降低。通過VS和PS的渲染,可以很容易的營(yíng)造出真實(shí)的水面動(dòng)態(tài)波紋光影效果。此時(shí)DirectX的權(quán)威地位終于建成。
DirectX 9.0
2002年底,微軟發(fā)布DirectX9.0。DirectX 9中PS單元的渲染精度已達(dá)到浮點(diǎn)精度,傳統(tǒng)的硬件T&L單元也被取消。全新的VertexShader(頂點(diǎn)著色引擎)編程將比以前復(fù)雜得多,新的VertexShader標(biāo)準(zhǔn)增加了流程控制,更多的常量,每個(gè)程序的著色指令增加到了1024條。
PS 2.0具備完全可編程的架構(gòu),能對(duì)紋理效果即時(shí)演算、動(dòng)態(tài)紋理貼圖,還不占用顯存,理論上對(duì)材質(zhì)貼圖的分辨率的精度提高無限多;另外PS1.4只能支持28個(gè)硬件指令,同時(shí)操作6個(gè)材質(zhì),而PS2.0卻可以支持160個(gè)硬件指令,同時(shí)操作16個(gè)材質(zhì)數(shù)量,新的高精度浮點(diǎn)數(shù)據(jù)規(guī)格可以使用多重紋理貼圖,可操作的指令數(shù)可以任意長(zhǎng),電影級(jí)別的顯示效果輕而易舉的實(shí)現(xiàn)。
VS 2.0通過增加Vertex程序的靈活性,顯著的提高了老版本(DirectX8)的VS性能,新的控制指令,可以用通用的程序代替以前專用的單獨(dú)著色程序,效率提高許多倍;增加循環(huán)操作指令,減少工作時(shí)間,提高處理效率;擴(kuò)展著色指令個(gè)數(shù),從128個(gè)提升到256個(gè)。
增加對(duì)浮點(diǎn)數(shù)據(jù)的處理功能,以前只能對(duì)整數(shù)進(jìn)行處理,這樣提高渲染精度,使最終處理的色彩格式達(dá)到電影級(jí)別。突破了以前限制PC圖形圖象質(zhì)量在數(shù)學(xué)上的精度障礙,它的每條渲染流水線都升級(jí)為128位浮點(diǎn)顏色,讓游戲程序設(shè)計(jì)師們更容易更輕松的創(chuàng)造出更漂亮的效果,讓程序員編程更容易。
DirectX 9.0c
與過去的DirectX 9.0b和Shader Model 2.0相比較,DirectX 9.0c最大的改進(jìn),便是引入了對(duì)Shader Model 3.0(包括Pixel Shader 3.0 和Vertex Shader 3.0兩個(gè)著色語言規(guī)范)的全面支持。舉例來說,DirectX 9.0b的Shader Model 2.0所支持的Vertex Shader最大指令數(shù)僅為256個(gè),Pixel Shader最大指令數(shù)更是只有96個(gè)。而在最新的Shader Model 3.0中,Vertex Shader和Pixel Shader的最大指令數(shù)都大幅上升至65535個(gè),全新的動(dòng)態(tài)程序流控制、位移貼圖、多渲染目標(biāo)(MRT)、次表面散射 Subsurface scattering、柔和陰影Soft shadows、環(huán)境和地面陰影 Environmental and ground shadows、全局照明(Global illumination)等新技術(shù)特性,使得GeForce 6、GeForce 7系列以及Radeon X1000系列立刻為新一代游戲以及具備無比真實(shí)感、幻想般的復(fù)雜的數(shù)字世界和逼真的角色在影視品質(zhì)的環(huán)境中活動(dòng)提供強(qiáng)大動(dòng)力。
因此DirectX 9.0c和Shader Model 3.0標(biāo)準(zhǔn)的推出,可以說是DirectX發(fā)展歷程中的重要轉(zhuǎn)折點(diǎn)。在DirectX 9.0c中,Shader Model 3.0除了取消指令數(shù)限制和加入位移貼圖等新特性之外,更多的特性都是在解決游戲的執(zhí)行效率和品質(zhì)上下功夫,Shader Model 3.0誕生之后,人們對(duì)待游戲的態(tài)度也開始從過去單純地追求速度,轉(zhuǎn)變到游戲畫質(zhì)和運(yùn)行速度兩者兼顧。因此Shader Model 3.0對(duì)游戲產(chǎn)業(yè)的影響可謂深遠(yuǎn)。
DirectX 10.0
包含在Windows Vista操作系統(tǒng)中,無法單獨(dú)下載使用。
新的DirectX使你獲得更好的圖像顯示質(zhì)量,使多人游戲具可伸縮性,以及包括更棒的音頻效果。它強(qiáng)化了針對(duì)DirectDraw和Direct3D的接口,簡(jiǎn)化了應(yīng)用擴(kuò)展,提升性能;改善了圖形創(chuàng)作工具,更易于做出最佳的3-D角色和環(huán)境;點(diǎn)光源式光影和像素式光影使圖象更逼真;強(qiáng)化了DirectSound和DirectMusic,簡(jiǎn)化了其應(yīng)用擴(kuò)展;DLS2音頻合成功能提高了樂器音頻的真實(shí)感;DirectInput的設(shè)備影射功能令對(duì)設(shè)備的支持更簡(jiǎn)單;DirectPlay使多人游戲的性能和可擴(kuò)展性得到了提高; DirectPlay提供了IP聲音通訊;DirectShow的應(yīng)用編程接口提供了音頻/視頻的實(shí)時(shí)合成和即時(shí)編輯;DirectShow支持Windows媒體音頻和視頻(WMA和WMV)的讀寫; Microsoft TV技術(shù)可以支持?jǐn)?shù)字電視節(jié)目。當(dāng)然,最重要的是一些新游戲需要它。DirectX Redist通常每?jī)蓚€(gè)月更新一次,包含了DirectX Runtimes的所有更新,可以替代此前發(fā)布的舊版本,適合Windows XP、Server 2003、Vista等操作系統(tǒng),不支持Windows 9x/2000。一般最新的3D游戲等應(yīng)用程序都需要新的DirectX接口,因此強(qiáng)烈推薦更新。
Vista DX10用戶也同樣需要。
顯卡所支持的DirectX版本已成為評(píng)價(jià)顯卡性能的標(biāo)準(zhǔn),從顯卡支持什么版本的DirectX,用戶就可以分辨出顯卡的性能高低,從而選擇出適合于自己的顯卡產(chǎn)品。
DirectX 10.1
正如以前的DX版本一樣,DX10.1也是DX10的超集,因此它將支持DirectX 10的所有功能,同時(shí)它將支持更多的功能,提供更高的性能。
DX10.1的一個(gè)主要提高是改善的shader資源存取功能,在多樣本AA時(shí),在讀取樣本時(shí)有更好的控制能力。除此之外,DX10.1還將可以創(chuàng)建定制的下行采樣濾波器。
DX10.1還將有更新的浮點(diǎn)混合功能,對(duì)于渲染目標(biāo)更有針對(duì)性,對(duì)于渲染目標(biāo)混合將有新的格式,渲染目標(biāo)可以實(shí)現(xiàn)獨(dú)立的各自混合。陰影功能一直是游戲的重要特效,Direct3D 10.1 的陰影濾波功能也將有所提高,從而可望進(jìn)一步提高畫質(zhì)。
在性能方面,DirectX 10.1將支持多核系統(tǒng)有更高的性能。而在渲染,反射和散射時(shí),Direct3D 10.1將減少對(duì)API的調(diào)用次數(shù),從而將獲得不錯(cuò)的性能提升。
其他方面,DX10.1的提高也不少,包括32bit浮點(diǎn)濾波,可以提高渲染精確度,改善HDR渲染的畫質(zhì)。完全的抗鋸齒應(yīng)用程序控制也將是DX10.1的亮點(diǎn),應(yīng)用程序?qū)⒖梢钥刂贫嘀夭蓸雍统?jí)采樣的使用,并選擇在特定場(chǎng)景出現(xiàn)的采樣模板。DX10.1將至少需要單像素四采樣。
DX10.1還將引入更新的驅(qū)動(dòng)模型,WDDM 2.1。與DX10的WDDM2.0相比,2.1有一些顯著的提高。
首先是更多的內(nèi)容轉(zhuǎn)換功能,WDDM2.0支持處理一個(gè)命令或三角形后進(jìn)行內(nèi)容轉(zhuǎn)換,而WDDM2.1則可以讓內(nèi)容轉(zhuǎn)換即時(shí)進(jìn)行。由于GPU同時(shí)要并行處理多個(gè)線程,因此內(nèi)容轉(zhuǎn)換的即時(shí)性不僅可以保證轉(zhuǎn)換質(zhì)量,還可以提升GPU效率,減少等待時(shí)間。另外,由于WDDM 2.1支持基于過程的虛擬內(nèi)存分配,處理GPU和驅(qū)動(dòng)頁(yè)面錯(cuò)誤的方式也更為成熟。
微軟預(yù)計(jì)將在兩周之內(nèi)(2008年7月中旬)宣布新一代API:DirectX 11。消息來源指出,微軟將在7月22日舉辦的Gamefest 2008上宣布新一代API,此前我們得到有關(guān)DirectX 11的最新消息是NVIDIA將在八月末的“NVISION 08”會(huì)議上講解DirectX 11。
由微軟舉辦的Gamefest 2008大會(huì)將于7月22-23日在西雅圖召開,Gamefest 2008大會(huì)是微軟每年一度的游戲技術(shù)探討盛會(huì),所以有關(guān)下一代游戲技術(shù)接口API的消息自然也是少不了的話題。
DirectX 11引入最大新技術(shù)特征無疑是Tessellation/Displacement,我們還聽說了多線程渲染、Compute Shaders也將是DirectX 11中重要環(huán)節(jié),另外據(jù)說DirectX 11還將引入Shader Model 5.0,具體細(xì)節(jié)信息尚不明確,Ray Tracing(光線跟蹤)與Rasterization(光柵化)技術(shù)的支持也還沒有提及。
DirectX 11
2009年1月9日星期五,微軟將面向公眾發(fā)布Windows 7客戶端Beta 1測(cè)試版。而此前一天,即1月8日,微軟將率先發(fā)布Windows 7服務(wù)器版本的Beta 1測(cè)試版。
在微軟發(fā)布的Windows 7Beta版本中,一些已經(jīng)安裝使用的用戶的發(fā)現(xiàn)了DirectX 11已經(jīng)包含其中了。DirectX 11作為3D圖形接口,不僅支持未來的DX11硬件,還向下兼容當(dāng)前的DirectX 10和10.1硬件。DirectX 11增加了新的計(jì)算shader技術(shù),可以允許GPU從事更多的通用計(jì)算工作,而不僅僅是3D運(yùn)算,這可以鼓勵(lì)開發(fā)人員更好地將GPU作為并行處理器使用。
在微軟發(fā)布的Windows 7 Beta版本中,已包含DirectX 11
另外,DirectX 11還支持tessellation鑲嵌化技術(shù),這有助于開發(fā)人員創(chuàng)建更為細(xì)膩流暢的模型,實(shí)現(xiàn)高質(zhì)量實(shí)時(shí)渲染和預(yù)渲染場(chǎng)景。多線程是DirectX 11的另外一大亮點(diǎn),DX11可以更好地利用多線程資源,從而使游戲更有效地利用多核處理器。
DirectX 11.1
微軟2011年10月15日公布了一份白皮書“Windows開發(fā)者預(yù)覽版中的Windows驅(qū)動(dòng)模型增強(qiáng)”,洋洋灑灑地深入介紹了Windows 8在圖形技術(shù)方面的改進(jìn)。根據(jù)白皮書,Windows 8將會(huì)支持新版顯示驅(qū)動(dòng)模型WDDM1.2,高于Windows 7 WDDM 1.1,但同時(shí)會(huì)放棄對(duì)服務(wù)器系統(tǒng)中XDDM的支持,全部轉(zhuǎn)向WDDM。
DirectX方面最關(guān)鍵的是當(dāng)然引入Direct3D 11.1,同時(shí)還會(huì)有平滑旋轉(zhuǎn)、立體3D、D3D11 Video等功能技術(shù)。微軟稱,即使是低端硬件,只要能夠利用好DirectX的優(yōu)勢(shì),也能夠在Windows 8上來更好的性能。
DirectX 11.2
2013年6月28日,微軟發(fā)布Directx11.2(Alpha版),其中一個(gè)重要特性是允許游戲使用系統(tǒng)內(nèi)存和顯存儲(chǔ)存紋理數(shù)據(jù),微軟的Antoine Leblond在BUILD大會(huì)上演示了主要利用內(nèi)存而不是顯存去儲(chǔ)存9GB紋理數(shù)據(jù)。這項(xiàng)特性對(duì)于未來的高清游戲具有重要意義。然而一個(gè)問題是,DirectX 11.2不支持Windows 8及之前操作系統(tǒng),只支持Windows 8.1和下一代主機(jī)Xbox One。
DirectX 12
2014年3月21日,微軟正式發(fā)布了新一代的API DirectX 12[1] 。雖然算不上全新設(shè)計(jì),雖然細(xì)節(jié)公布得還不是特別多,但至少不是Mantle的直接翻版,還是有微軟與合作伙伴設(shè)計(jì)的不少新東西的。DX12最重要的變化就是更底層API[2] ,這一點(diǎn)很像AMD Mantle,在硬件抽象層上走得比以往更深入,能夠同時(shí)減輕CPU、GPU的過載(overload)。具體包括:應(yīng)用可追蹤GPU流水線、控制資源狀態(tài)轉(zhuǎn)換(比如從渲染目標(biāo)到紋理)、控制資源重命名,更少的API和驅(qū)動(dòng)跟蹤,可預(yù)判屬性,等等。
另外,DX12大大提高了多線程效率,可以充分發(fā)揮多線程硬件的潛力。DX11在這方面受CPU性能的嚴(yán)重制約,主要是因?yàn)椴荒苡行Ю枚嗪诵摹N④浶Q,微軟對(duì)多核心CPU的利用幾乎是完美線性增長(zhǎng)的,也就是說四核心能接近單核心的四倍。
此外還有渲染流水線、渲染特性、資源管理、命令列表與綁定、描述符跳躍等等方面的改進(jìn),因?yàn)橹饕顷P(guān)于開發(fā)的,也比較深晦,這里就先不說太多了。
NVIDIA確認(rèn)說,開普勒、費(fèi)米、麥克斯韋架構(gòu)全部都支持DX12,也就是GeForce 200系列以來的型號(hào)都可以,DX11的都行。
AMD則確認(rèn),GCN架構(gòu)的所有顯卡均支持DX12,也就是Radeon HD 7000、Radeon R200系列[3] 。
Intel確認(rèn)稱,第四代Haswell可以支持DX12,但其實(shí)僅限最高端的兩個(gè)型號(hào):GT3 Iris 5100、GT3e Iris Pro 5200。
打開方法
有時(shí)候重裝系統(tǒng)后發(fā)現(xiàn)很多3D游戲都不能運(yùn)行,只有一些傳統(tǒng)2D平面游戲還能勉強(qiáng)運(yùn)行,而且速度很慢。這并不是因?yàn)閃indows 2003不支持3D游戲,而是系統(tǒng)設(shè)置的問題。
解決方法:首先請(qǐng)確保以正確的方式安裝好顯卡驅(qū)動(dòng),然后就要打開DirectX加速。DirectX加速是3D游戲最基本的需要,為了使Windows 更為單一地面向服務(wù)器平臺(tái)應(yīng)用,微軟默認(rèn)將其加速功能關(guān)閉。即便是在安裝了最新的DirectX 10.0之后也不會(huì)自動(dòng)打開加速功能,而必須手動(dòng)設(shè)置。在“開始”→“運(yùn)行”對(duì)話框中輸入“dxdiag”以打開DirectX診斷工具。隨后在顯示一欄中將DirectDraw、Direct3D、AGP紋理加速功能啟用。如此一來,Windows Server 2003便能運(yùn)行各種3D游戲。除此以外,Windows Server 2003還默認(rèn)關(guān)閉了硬件加速,可以在顯示屬性的高級(jí)菜單中將其設(shè)置為完全加速。
DirectX 11.1
DirectX 11之后是下一代的DirectX 12還是改進(jìn)版的DirectX 11.1呢?英特爾的一份產(chǎn)品路線路泄露了天機(jī),緊隨DirectX 11就是DirectX 11.1。
據(jù)國(guó)外媒體SoftPedia曝光的英特爾產(chǎn)品路線圖顯示,Sandy Bridge整合的是英特爾第6代圖形核心,支持DirectX 10.1和OpenGL 3.0;到了Ivy Bridge則進(jìn)化至第7代,可支持DirectX 11和OpenGL 3.1;到了2013年,同為22nm但架構(gòu)再度進(jìn)化的Haswell處理器誕生,其將整合增強(qiáng)版的第7代英特爾圖形核心,可支持OpenGL 3.2和DirectX 11.1,而推薦使用的操作系統(tǒng)則是64位的Windows 8。
Haswell將會(huì)采用Tri-Gate 22nm制造工藝技術(shù),并且采用可調(diào)節(jié)的TDP技術(shù),以在性能和節(jié)能方面,獲得更好平衡。同時(shí)Haswell還將會(huì)采用新的AVX2指令集,尚不知道具體發(fā)布時(shí)間,不過從已了解藍(lán)圖來看,服務(wù)器Haswell產(chǎn)品將會(huì)在2014年Q1發(fā)布。