完美DX10!ATI新王者HD2900XT權(quán)威評測
● 第三章:DirectX發(fā)展回顧以及DirectX10詳細(xì)介紹
第一節(jié):技術(shù)背景——DirectX 的發(fā)展回顧和API相關(guān)基本常識。
Microsoft發(fā)布的DirectX 10代表了自從可編程Shader出現(xiàn)以來在3D API方面的最巨大的進(jìn)步,也是自DirectX誕生以來,又一次徹底的重新設(shè)計。通過一番脫胎換骨般的重建,DirectX 10展現(xiàn)出一系列非常醒目的新特性,包括高度優(yōu)化的運行時,強(qiáng)大的Geometry Shader,紋理數(shù)組等等;這些特性將引領(lǐng)PC實時三維圖形進(jìn)入一個全新的世界。

DirectX總覽
在過去的十年中,DirectX已經(jīng)穩(wěn)步成為了Microsoft Windows平臺上進(jìn)行游戲開發(fā)的首選API。每一代的DirectX都帶來對新的圖形硬件特性的支持,幫助游戲開發(fā)者們視線更驚人的特效。那么我們也就按照DirectX發(fā)展的軌跡,以Direct3D為重點,為讀者完整回顧下DirectX的輝煌歷程。
● DirectX簡介
DirectX是Microsoft開發(fā)的基于Windows平臺的一組API,它是為高速的實時動畫渲染、交互式音樂和環(huán)境音效等高要求應(yīng)用開發(fā)服務(wù)的。

DirectX機(jī)制通常,Windows對硬件訪問的管制非常嚴(yán)格,用通常的辦法不易訪問,但DirectX通過“硬件抽象層(HAL)”給予了開發(fā)人員直接訪問硬件的能力,HAL不僅解決了硬件及兼容性問題,而且開發(fā)人員可以利用它直接訪問計算機(jī)的某些硬件設(shè)備,例如顯示設(shè)備的直接顯存控制和渲染,鍵盤、鼠標(biāo)和游戲桿的控制的直接訪問控制,音頻設(shè)備的直接音頻混合與輸出能力等等,因此開發(fā)人員可以充分利用硬件加速將程序的性能優(yōu)化到一個新的高度,如果目標(biāo)機(jī)器不支持相應(yīng)的硬件加速,DirectX還可以仿真加速器以提供強(qiáng)大的多媒體環(huán)境。DirectX家族包含的成員有Direct3D、DirectDraw、DirectInput、DirectMusic、DirectPlay、DirectSound、DirectDraw、DirectVoice、 DirectVideo和 DirectShow 。
● DirectX發(fā)展歷程
1.DirectX 1.0
DirectX 1.01995年9月,伴隨著Windows95的發(fā)布,微軟推出了DirectX 1.0。其中,來自于ATI的開發(fā)團(tuán)隊為DirectX的開發(fā)帶來了最基礎(chǔ)的圖形技術(shù)。第一代的DirectX很不成功,推出時眾多的硬件均不支持,當(dāng)時基本都采用專業(yè)圖形API-OpenGL,缺乏硬件的支持成了其進(jìn)一步擴(kuò)大影響的最大障礙。DirectX 1.0版本是第一個可以直接對硬件信息進(jìn)行讀取的程序。它提供了更為直接的讀取圖形硬件的性能以及基本的聲音和輸入設(shè)備功能(函數(shù)),使開發(fā)的游戲能實現(xiàn)對二維(2D)圖像進(jìn)行加速。這時候的DirectX不包括Direct3D,還處于一個初級階段。
2.DirectX 2.0/2.0a

DirectX 2.0
1996年,伴隨著Windows95的成功,微軟實行了一項新計劃,以支持在Windows95上運行更多的3D游戲,目標(biāo)是擴(kuò)大市PC領(lǐng)域的游戲市場。于是微軟收購了英國的Rendermorphics,Ltd.并得到了名為RealityLab的3D API。經(jīng)重新整理,微軟發(fā)布了新的3D API——Direct3D,并整合在DirectX2.0中。
DirectX2.0最大的改善是在Direct Draw,而且為當(dāng)時風(fēng)靡全世界的《RedAlert》和《Diablo》所支持,《RedAlert》的Windows版本和《Diablo》都是在DirectX的標(biāo)準(zhǔn)上開發(fā)的。除了2D以外,DirectX2.0的D3D部分的雛形基本完成,由于當(dāng)時3D游戲較少,很多都是基于DOS開發(fā)的。世嘉公司的VR戰(zhàn)士的PC版本就是基于DirectX2.0開發(fā)完成的,雖然效果粗糙了一些,但Direct 3D魅力還是可以感受到的。
在DirectX 2.0中,采用了“平滑模擬和RGB模擬”兩種模擬方式對三維(3D)圖像進(jìn)行加速計算的。DirectX 2.0同時也采用了更加友好的用戶設(shè)置程序并更正了應(yīng)用程序接口的許多問題。從DirectX 2.0開始,整個DirectX的設(shè)計架構(gòu)雛形就已基本完成。但是當(dāng)時3D游戲程序更多的是基于3DFX的Glide以及ID的QUAKE引擎(OpenGL)開發(fā),支持Direct 3D的游戲很少。
3.DirectX 3.0/3.0a
1996年后期,微軟發(fā)布了DirectX 3.0,DirectX 3.0是DirectX 2.0的簡單升級版,它對DirectX 2.0的改動并不多。包括對DirectSound(針對3D聲音功能)和DirectPlay(針對游戲/網(wǎng)絡(luò))的一些修改和升級。DirectX 3.0集成了較簡單的3D效果,還不是很成熟。
在微軟不遺余力的推廣下,DirectX的魅力被眾多軟硬件廠商看好,讓D3D有了與OpenGL與Glide格斗的資本。從這個版本開始,很多玩家知道了DirectX存在,也是這個時候開始出現(xiàn)了可以支持Direct 3D的加速卡,如Nvidia的Riva128,Intel的I740。
當(dāng)然微軟在Direct3D的推廣中并不是一帆風(fēng)順,也出現(xiàn)過不少波折。微軟當(dāng)時拒絕了在Window95上支持OpenGL并采取異常手段收回對OpenGL的MCD驅(qū)動接口的支持,這個做法導(dǎo)致了很多游戲開發(fā)者的反對。QUAKE之父John Carmack公開聲明拒絕D3D,著名游戲制作人Chris Hecker在游戲開發(fā)雜志上發(fā)表了兩套API的全面分析,并以微軟應(yīng)放棄D3D為結(jié)論。以John Carmack為首的56名首席游戲開發(fā)者曾聯(lián)名至信微軟,要求其發(fā)行OpenGL MCD驅(qū)動。
微軟則堅持自己的一貫立場:Direct3D面向通用(high-volume)、高性能應(yīng)用,認(rèn)為OpenGL只面向高精度的專業(yè)CAD應(yīng)用。所以微軟繼續(xù)增加對Direct3D的投資,并繼續(xù)削減對OpenGL的投入。
4.DirectX 5.0/5.1/5.2
1997年6月,微軟公司跳過了DirectX 4.0,直接推出了DirectX 5.0。DirectX 5.0對Direct3D做出了很大的改動,加入了霧化效果、Alpha混合等3D特效,使3D游戲中的空間感和真實感得以增強(qiáng),此外還加入了S3的紋理壓縮技術(shù)。

DirectX 5.0架構(gòu)同時,DirectX 5.0在其它各組件方面也有加強(qiáng),在聲卡、游戲控制器方面均做了改進(jìn),支持了更多的設(shè)備。因此,DirectX發(fā)展到DirectX 5.0才真正走向了成熟。此時的DirectX性能完全不遜色于其它3D API,而且大有后來居上之勢。
微軟的投入也得到了回報,3DFX的GLIDE API開始逐漸失去了過去在游戲開發(fā)領(lǐng)域的優(yōu)勢地位,最著名的兩個例子就當(dāng)時稱得上是風(fēng)靡世界的古墓麗影2和優(yōu)品飛車2,這兩個過去本來是GLIDE的御用游戲,都加入了對D3D API的支持,當(dāng)時著名的Riva 128等非VOODOO顯卡也可以通過D3D接口完美的運行游戲。
5.DirectX 6/6.1

DirectX 61998年7月,DirectX 6正式發(fā)布,它的新特性有:幾何形體的靈活頂點格式定義、幾何形體的頂點緩沖存儲、支持多紋理渲染、自動紋理管理、可選深度緩沖(使用Z Buffer或W Buffer)、通過凹凸環(huán)境貼圖(ENV BUMP ENVMAP,同級別顯卡中只有MATROX的G400支持)為反光面和水波特效提供逐像素的渲染和貼圖能力。DirectX 6的3D效果更豐富,而且借助硬件的強(qiáng)大性能,可以渲染出高分辨率下的32位色的圖像效果。可以看到,這一時期,DirectX 的技術(shù)進(jìn)步速度也遠(yuǎn)遠(yuǎn)超過了GLIDE。
6.DirectX 7/7.1
1999年9月,微軟推出了DirectX 7.0。DirectX7最大的進(jìn)步就是支持硬件T&L(Transforms&Lighting),也就是“坐標(biāo)轉(zhuǎn)換和光源”。上一章已經(jīng)有過介紹,此處不再贅述。

DirectX 7DirectX 7的其它新特性有:立方體表面的環(huán)境貼圖、幾何渲染、改進(jìn)的紋理渲染、自動紋理坐標(biāo)生成、紋理轉(zhuǎn)換、投影紋理和任意面裁剪、D3DX實用庫等。
DirectX 7的發(fā)布無疑給了GLIDE的致命的一擊,DirectX 7提供的特效更豐,D3D函數(shù)庫的引入方便了開發(fā)人員的使用,迅速得到游戲廠商的青睞。為了挽回局面,3DFX甚至還開放GLIDE源代碼,但最終GLIDE還是被廣大開發(fā)人員所離棄。沒有了GLIDE的3DFX最終也以被自己的老對手NVIDIA收購而告終。
7.DirectX 8.0/8.1
2000年9月,微軟正式推出了劃時代的DirectX 8 ,將可編程的著色管線概念正式引入到GPU,新的shaders(著色器)數(shù)據(jù)處理方式也是DirectX 8中最具意義的創(chuàng)新。Shader采用了新的數(shù)據(jù)處理程序模型,這與舊有的預(yù)定義模型是不同的。這種模型中,數(shù)據(jù)是透過virtual machine以一個類似于帶有特殊匯編指令集的pre-arranged(事先安排好)程序進(jìn)行處理的,程序員可以直接對其進(jìn)行編程。

DirectX 8
憑借可編程幾何管線和可編程像素管線,使用者可以自由的控制幾何和像素的代碼設(shè)計。這對于圖形開發(fā)者是空前的,他們可以通過基本的著色器,利用開發(fā)工具,產(chǎn)生全新的,極具創(chuàng)造力的效果。也正是可編程管線的引入,為GPU發(fā)展翻開了新的篇章,GPU開始向SIMD處理器方向發(fā)展,憑借強(qiáng)大的并行處理性能,使得GPU開始用有了部分流式處理器特征,逐漸開始被用于工程方面的通用計算。

DirectX 8架構(gòu)DirectX 8的其他特性:編寫定制的硬件著色器,例如通用紋理組合公式,逐像素光照(凹凸貼圖),適用于實現(xiàn)照片(真實)級鏡面效果的逐像素環(huán)境貼圖或者任何其他開發(fā)者定義的算法。 支持多重采樣渲染 、高性能的粒子系統(tǒng)渲染、 3D空間紋理 、允許范圍衰減、包含了用于輸出Direct3D蒙皮網(wǎng)格的三維內(nèi)容創(chuàng)建工具插件,使用了Direct3D多種不同技術(shù),多分辨率層次細(xì)節(jié)(LOD)幾何、索引頂點混合 、擴(kuò)充了Direct3DX實用庫。
2001年底,Microsoft推出了DirectX8.1,主要的改進(jìn)是增加了PixelShader 1.2/1.3/1.4。在此之前,Microsoft差不多每年推出一個DirectX新版本,到DX8以后,這個速度開始減緩,以后的DirectX9也是如此。主要的原因是自 DirectX 7以后,每一個版本(major release)實際對應(yīng)于一代新的顯示核心,硬件的更新周期要長于軟件,所以作為圖形API的DirectX要照顧到軟件更新的速度。另外,游戲開發(fā)的復(fù)雜程度也越來越高,開發(fā)周期也越來越長,而游戲開發(fā)人員并不希望在開發(fā)過程中更新API。
8.DirectX 9.0/9.0b/9.0c

DirectX 9.02002年底,微軟發(fā)布DirectX9.0。DirectX 9中Shader的渲染精度已達(dá)到浮點精度,為GPU向通用計算領(lǐng)域的發(fā)展邁出了決定性的一步。全新的VertexShader(頂點著色引擎)編程將比以前復(fù)雜得多,新的VertexShader標(biāo)準(zhǔn)增加了流程控制,更多的常量,每個程序的著色指令增加到了1024條。全新高級著色器語言的引入,使得程序員從底層代碼中解放出來。

DirectX 9詳細(xì)規(guī)格PS 2.0具備完全可編程的架構(gòu),能對紋理效果即時演算、動態(tài)紋理貼圖,還不占用顯存,理論上對材質(zhì)貼圖的分辨率的精度提高無限多;另外PS1.4只能支持28個硬件指令,同時操作6個材質(zhì),而PS2.0卻可以支持160個硬件指令,同時操作16個材質(zhì)數(shù)量,新的高精度浮點數(shù)據(jù)規(guī)格可以使用多重紋理貼圖,可操作的指令數(shù)可以任意長,電影級別的顯示效果輕而易舉的實現(xiàn)。
VS 2.0通過增加Vertex程序的靈活性,顯著的提高了老版本(DirectX8)的VS性能,新的控制指令,可以用通用的程序代替以前專用的單獨著色程序,效率提高許多倍;增加循環(huán)操作指令,減少工作時間,提高處理效率;擴(kuò)展著色指令個數(shù),從128個提升到256個。
DirectX9的出現(xiàn)使得OpenGL API在游戲開發(fā)領(lǐng)域的應(yīng)用走到了尾聲。目前,除了ID SOFTWARE自家的DOOM、QUAKE系列,基于OpenGL API開發(fā)的游戲已經(jīng)屈指可數(shù)了。微軟把OpenGL API的應(yīng)用限制在專業(yè)工作站領(lǐng)域的目的已經(jīng)達(dá)到。

DirectX9.0c DirectX9也有DirectX9.0b和DirectX9.0c兩個版本,由于篇幅關(guān)系,此處不再詳細(xì)介紹。
關(guān)注我們


