DirectX 12僅適用于Windows 10,這個微軟重新打造的圖形界面擁有更強大的性能,并且能夠在一定程度上兼容舊的顯示卡。
現如今隨處可見使用智能手機玩游戲的用戶,許多家庭用戶則傾向于選擇連接電視機使用的游戲機,但是對于真正的游戲玩家而言,電腦仍然是首選。以德國為例,根據YouGov的調查顯示,約有55%的游戲玩家仍然使用桌面電腦玩游戲,另有約42%的用戶使用筆記本電腦。為此,微軟在發(fā)布Windows 10時,重新打造了新的DirectX圖形庫(12版)。在該版本的DirectX上微軟公司特別增強了其性能,而且不同于以往的DirectX版本,用戶不必等待新的顯示卡就能獲得DirectX 12帶來的性能增強效果,因為DirectX 12基本上是一個軟件的優(yōu)化,近5年的硬件都可以從中獲得增益,但前提是用戶必須使用Windows 10,全新的DirectX只能運行在Windows 10上。
DirectX 12修正了舊版DirectX的一個致命弱點:代碼沒有針對多核心處理器進行優(yōu)化。顯示卡并不是自己完成所有任務,它需要通過CPU負擔一部分的任務,而DirectX此前的版本只能夠通過一個核心或線程執(zhí)行任務。對于多核心處理器來說,這明顯是一種浪費。AMD已經解決了這一問題,該公司推出的圖形界面Mantle可以支持多核心處理器,通過2~4個核心進行工作。Mantle可以兼容各種游戲引擎,但是它只能夠用于AMD顯示卡,這導致其沒有被廣泛接受。不過,盡管Mantle不是很成功,但AMD的努力卻也已經迫使微軟對DirectX進行優(yōu)化。
微軟新的Windows顯示驅動程序模型2.0(WDDM2.0)降低了驅動程序的作用,讓游戲開發(fā)者可以像游戲機一樣更好地利用電腦的硬件資源。因此,當游戲正在運行的時候,驅動程序將在用戶模式下運行,盡可能地減少對游戲引擎的阻礙。這使得游戲引擎可以更直接訪問硬件,可以更好地調整CPU、內存和顯示卡的工作方式與工作量。在資源管理方面,WDDM 2.0設置了一個統(tǒng)一的虛擬空間來存儲地址,虛擬存儲空間覆蓋顯示卡的存儲器和電腦的內存,因此,GPU可以不必經由顯示卡驅動傳輸數據到速度較慢的電腦內存上。
DirectX的游戲引擎也承擔統(tǒng)一調配所有CPU內核的責任:決定如何處理命令緩沖區(qū)。命令緩沖區(qū)是由CPU創(chuàng)建,用于掛起待處理任務的存儲區(qū)域。在DirectX 11中該區(qū)域由驅動程序接管,但是它不允許分配任務到多個內核或線程的緩沖區(qū),現在,DirectX 12已經被允許這樣做。這些由CPU發(fā)送到GPU的繪圖指令包含GPU要創(chuàng)建的對象顏色、大小和位置的信息。通過分配多個線程緩存,現在DirectX 12處理最大數量的繪圖指令。對于游戲來說這是一件好事,可以渲染每一幀的多個對象。在這方面,甚至舊的顯示卡也可以在DirectX 12的支持下獲得性能的提升。然而,這并不適用于現有的游戲:因為這些游戲的游戲引擎還未能夠兼容DirectX 12。
DirectX12另一項新功能是加快單個幀的渲染速度,DirectX中通過多級流水線計算對象,包括一個對象的光照、紋理和位置。在11版本的DirectX,流水線必須對各幀和對象重新設置。第12版的DirectX保存了所有進入流水線的對象,如果該對象在下一幀沒有什么變化,那么就沒有重新計算的必要,可以直接將對象顯示出來。如果只有一級流水線出現變化,那么只重新計算該流水線即可。
DirectX 12的多適配器模式允許整合電腦上所有可用的圖形資源,例如多個顯示卡?,F在顯示卡可以自己完成大多數幀的處理工作,并將其余的事情留給CPU的圖形單元。由于專業(yè)的游戲玩家可能配備多個顯示卡,所以多適配器模式可以提供極大的增益。以往,多個顯示卡只能夠交替地呈現幀,這種工作方式并不總是能夠順利進行,顯示卡存儲器也無法得到充分利用,而現在所有的存儲器都可以被利用,多個顯示卡甚至可以以瓜分單個幀的方式來協(xié)同工作。
雖然舊的顯示卡也可以從DirectX 12中獲益,但是它們并不能支持所有DirectX 12的功能級別。這些級別涉及一些渲染功能,可以顯示更多的細節(jié)或更快的執(zhí)行效果。功能級別11.0和11.1在DirectX 11中已經出現,它們代表顯示卡對于DirectX 12最起碼的支持。新的功能級別12.0和12.1主要包含可以使游戲看起來更漂亮的功能,例如“保守光柵第1層(Tier 1)”功能將可以更精確地呈現陰影。第一個DirectX 12游戲預計將在今年年底發(fā)布,除了支持DirectX 12的新一代顯示卡之外,在DirectX 12的支持下,老顯示卡也可以有很多潛力可以挖掘,但如何讓老顯示卡可以在新系統(tǒng)上更好地工作取決于程序開發(fā)人員。