■劉君
DirectX12是什么?
■劉君
DirectX 12是時下一個電腦愛好者關注比較高的話題,無論是Win10系統,還是一些大作游戲配置要求中,都可以看到有DirectX 12標注。究竟DirectX 12是什么,有哪些作用呢?圍繞這些電腦小白朋友比較陌生的問題,下面小編做個詳細介紹。
DirectX 12是什么?
DirectX全稱為Direct eXtension,是由微軟公司創建的多媒體編程接口。
DirectX由C++編程語言實現,遵循COM。被廣泛使用于Microsoft Windows、Microsoft Xbox和Microsoft Xbox 360電子游戲開發,并且只能支持這些平臺,DirectX 12是目前DirectX最新的版本,大家熟悉的XP系統內置的版本為DirectX 9.0,Win7/8系統則內置版本為DirectX 11,而Win10正式版中,將內置最新的DirectX12。
簡單來說,DirectX 12是目前微軟Windows系統中的DirectX最新版本。
DirectX 12有什么用?
DirectX主要功能是加強3D圖形和聲音效果,并提供設計人員一個共同的硬件驅動標準,讓游戲開發者不必為每一品牌的硬件來寫不同的驅動程序,也降低用戶安裝及設置硬件的復雜度。
從字面意義上說,Direct就是直接的意思,而后邊的X則代表了很多的意思,從這一點上我們就可以看出DirectX的出現就是為了為眾多軟件提供直接的API接口服務,通常來說,更高版本的DirectX,會具備更好的體驗。
簡單來說,DirectX 12其實是一個非常重要的API更新,主要是提高了驅動效率,給開發者更多的控制權。DirectX 12改變了底層的API,在硬件抽象層上走得比以往更深入,具體包括了應用可追蹤GPU流水線、控制資源狀態轉換(比如從渲染目標到紋理)、控制資源重命名,更少的API和驅動跟蹤,可預判屬性,多線程優化等等,可以帶來更好的游戲體驗。
而在PC這邊,游戲開發者也能更容易地做好顯示效果??傮w上來說,本次DirectX 12是一個大家都非常喜歡看到的新版本。
DirectX并不是一個單純的圖形API,它是由微軟公司開發的用途廣泛的API,它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多個組件,它提供了一整套的多媒體接口方案。只是其在3D圖形方面的優秀表現,讓它的其它方面顯得暗淡無光。DirectX開發之初是為了彌補Windows 3.1系統對圖形、聲音處理能力的不足,而今已發展成為對整個多媒體系統的各個方面都有決定性影響的接口。
微軟公司并沒有推出DirectX 4.0,而是直接推出了DirectX 5.0。此版本對Direct3D做出了很大的改動,加入了霧化效果、Alpha混合等3D特效,使3D游戲中的空間感和真實感得以增強,還加入了S3的紋理壓縮技術。同時,DirectX 5.0在其它各組件方面也有加強,在聲卡、游戲控制器方面均做了改進,支持了更多的設備。因此,DirectX發展到DirectX 5.0才真正走向了成熟。此時的DirectX性能完全不遜色于其它3D API,而且大有后來居上之勢。
DirectX 6.0推出時,其最大的競爭對手之一Glide,已逐步走向了沒落,而DirectX則得到了大多數廠商的認可。DirectX 6.0中加入了雙線性過濾、三線性過濾等優化3D圖像質量的技術,游戲中的3D技術逐漸走入成熟階段。
DirectX 7.0最大的特色就是支持T&L,中文名稱是“坐標轉換和光源”。3D游戲中的任何一個物體都有一個坐標,當此物體運動時,它的坐標發生變化,這指的就是坐標轉換;3D游戲中除了場景+物體還需要燈光,沒有燈光就沒有3D物體的表現,無論是實時3D游戲還是3D影像渲染,加上燈光的3D渲染是最消耗資源的。雖然OpenGL中已有相關技術,但此前從未在民用級硬件中出現。在T&L問世之前,位置轉換和燈光都需要CPU來計算,CPU速度越快,游戲表現越流暢。使用了T&L功能后,這兩種效果的計算用顯示卡的GPU來計算,這樣就可以把CPU從繁忙的勞動中解脫出來。換句話說,擁有T&L顯示卡,使用DirectX 7.0,即使沒有高速的CPU,同樣能流暢的跑3D游戲。
DirectX 8.0的推出引發了一場顯卡革命,它首次引入了“像素渲染”概念,同時具備像素渲染引擎(Pixel Shader)與頂點渲染引擎(Vertex Shader),反映在特效上就是動態光影效果。同硬件T&L僅僅實現的固定光影轉換相比,VS和PS單元的靈活性更大,它使GPU真正成為了可編程的處理器。這意味著程序員可通過它們實現3D場景構建的難度大大降低。通過VS和PS的渲染,可以很容易的寧造出真實的水面動態波紋光影效果。此時DirectX的權威地位終于建成。
2002年底,微軟發布DirectX9.0。DirectX 9中PS單元的渲染精度已達到浮點精度,傳統的硬件T&L單元也被取消。全新的VertexShader(頂點著色引擎)編程將比以前復雜得多,新的VertexShader標準增加了流程控制,更多的常量,每個程序的著色指令增加到了1024條。
PS 2.0具備完全可編程的架構,能對紋理效果即時演算、動態紋理貼圖,還不占用顯存,理論上對材質貼圖的分辨率的精度提高無限多;另外PS1.4只能支持28個硬件指令,同時操作6個材質,而PS2.0卻可以支持160個硬件指令,同時操作16個材質數量,新的高精度浮點數據規格可以使用多重紋理貼圖,可操作的指令數可以任意長,電影級別的顯示效果輕而易舉的實現。
VS 2.0通過增加Vertex程序的靈活性,顯著的提高了老版本(DirectX8)的VS性能,新的控制指令,可以用通用的程序代替以前專用的單獨著色程序,效率提高許多倍;增加循環操作指令,減少工作時間,提高處理效率;擴展著色指令個數,從128個提升到256個。
增加對浮點數據的處理功能,以前只能對整數進行處理,這樣提高渲染精度,使最終處理的色彩格式達到電影級別。突破了以前限制PC圖形圖象質量在數學上的精度障礙,它的每條渲染流水線都升級為128位浮點顏色,讓游戲程序設計師們更容易更輕松的創造出更漂亮的效果,讓程序員編程更容易。
與過去的DirectX 9.0b和Shader Model 2.0相比較,DirectX 9.0c最大的改進,便是引入了對Shader Model 3.0(包括Pixel Shader 3.0和Vertex Shader 3.0兩個著色語言規范)的全面支持。舉例來說,DirectX 9.0b的Shader Model 2.0所支持的Vertex Shader最大指令數僅為256個,Pixel Shader最大指令數更是只有96個。而在最新的Shader Model 3.0中,Vertex Shader和Pixel Shader的最大指令數都大幅上升至65535個,全新的動態程序流控制、位移貼圖、多渲染目標(MRT)、次表面散射Subsurface scattering、柔和陰影Soft shadows、環境和地面陰影Environmental and ground shadows、全局照明(Global illumination)等新技術特性,使得GeForce 6、GeForce7系列以及Radeon X1000系列立刻為新一代游戲以及具備無比真實感、幻想般的復雜的數字世界和逼真的角色在影視品質的環境中活動提供強大動力。
因此DirectX 9.0c和Shader Model 3.0標準的推出,可以說是DirectX發展歷程中的重要轉折點。在DirectX 9.0c中,Shader Model 3.0除了取消指令數限制和加入位移貼圖等新特性之外,更多的特性都是在解決游戲的執行效率和品質上下功夫,Shader Model 3.0誕生之后,人們對待游戲的態度也開始從過去單純地追求速度,轉變到游戲畫質和運行速度兩者兼顧。因此Shader Model 3.0對游戲產業的影響可謂深遠。
此外,隨著Win7和Win8的推出,DirectX版本提升到了DirectX 10/11,甚至目前最新的DirectX 12。對于電腦愛好者來說,只要知道DirectX主要是為了提升游戲或者圖形性能體驗的,更高版版的DirectX可以帶來電腦游戲性能的提升。不過也需要注意的是,最新的DirectX 12需要系統與硬件的支持,比如系統需要Win10,顯卡需要支持DirectX 12,一些老舊顯卡可能無法支持最新的DirectX 12。