Loading AI tools
微软平台上多媒体相关的API集合 来自维基百科,自由的百科全书
DirectX(Direct eXtension,縮寫:DX)是由微軟公司建立的一系列專為多媒體以及遊戲開發的應用程式介面。旗下包含Direct3D、Direct2D、DirectCompute等等多個不同用途的子部份,因為這一系列API皆以Direct字樣開頭,所以DirectX(只要把X字母替換為任何一個特定API的名字)就成為這一巨大的API系列的統稱。目前最新版本為DirectX 12,隨附於Windows 10作業系統之上。
![]() | |
當前版本 |
|
---|---|
內置於 | Windows 95 OSR2 Windows NT 4.0 及之後所有版本 |
許可協議 |
DirectX被廣泛用於Microsoft Windows、Microsoft Xbox電子遊戲開發,並且只能支持這些平台。除了遊戲開發之外,DirectX亦被用於開發許多虛擬三維圖形相關軟體。Direct3D是DirectX中最廣為應用的子模塊,所以有時候這兩個名詞可以互相代稱。
DirectX組成的元件有:
這些元件曾經也是DirectX的一員,但現在微軟只提供最低程度的維護,也不再建議使用。
1994年末,微軟即將推出新一代操作系統Windows 95。決定新操作系統的最終價值的因素在於究竟新系統能運行哪些程序。微軟的三個員工:Craig Eisler、Alex St. John、Eric Engstrom十分關心這個問題,因為不少遊戲程序員更喜歡在DOS系統下編寫遊戲,這意味著,沒有多少人願意為WIN95編寫遊戲,新操作系統不會獲得多少成功。
DOS允許直接訪問顯卡、鍵盤、鼠標、聲卡以及其他系統硬件設施。而Windows 95出於保護存儲系統的目的,限制了對硬件的直接訪問,取而代之的是一套更加規範標準的訪問方法。微軟需要一種方法讓程序員在WIN95中也能編寫出高效的程序。此時,離新系統發布不到幾個月了。St. John和Engstrom聯合解決了這個問題,他們將解決方案稱為DirectX。
DirectX的第一個版本作為Windows Games SDK發布於1995年9月,它作為Windows API的一部分用以替換Windows 3.1中的DCI和WinGAPI。ATI的一個開發團隊為微軟帶來了基本的遊戲圖像技術,微軟方面,DirectX由專門的團隊負責開發,Eisler為團隊領導,而St. John和Engstrom則成為主程序設計師。
DirectX出現之前,微軟已經將OpenGL包括在Windows NT系統中,而在當時,OpenGL對硬件要求嚴苛,這限制了一些工程師和CAD用戶。Direct3D就作為OpenGL的代替品被加入DirectX。隨着硬件技術的發展,OpenGL成為行業標準,一場「戰役」發生在DirectX的支持者和OpenGL的支持者之間,而且前者只支持Windows平台,而後者支持多平台。在實際應用中,遊戲開發者常常兩者同時使用,因為DirectX支持許多OpenGL所不支持的功能,比如音效和輸入裝置。而選擇混合使用OpenGL和OpenAL的隊伍也在壯大。
由此衍生出的「特別DirectX」也作為微軟Xbox和Xbox 360的圖形API,這套API由微軟和NVIDIA公司共同開發,Xbox API和DirectX 8.1比較相似,但跟其他主機科技一樣不能更新,Xbox版本也叫做DirectXbox,但由於商業銷售緣故,還是被簡稱為Xbox。[1]
2002年,微軟發布了DirectX 9,它支持最新的頂點陰影着色器2.0版本,又於2004年4月將shader model 3.0(SM 3.0)加入了DirectX 9.0c。
2005年4月,DirectShow從DirectX移除,加入到Microsoft Platform SDK。[2]
2010年6月7日發佈的DirectX SDK是最後獨立發佈的SDK版本,之後的DirectX SDK被整合進新版的Microsoft Windows SDK裡。例如DirectX 11.2 SDK被放在Windows Software Development Kit (SDK) for Windows 8.1裡。
DirectX版本 | 版本編號[3] | 作業系統 | 日期 | 備註 |
---|---|---|---|---|
DirectX 1.0 | 4.02.0095 | 1995年9月30日 | ||
DirectX 2.0 | 未知 | 1996年 | ||
DirectX 2.0a | 4.03.00.1096 | Windows 95和NT 4.0 | 1996年6月5日 | |
DirectX 3.0 | 4.04.00.0068 | 1996年9月15日 | ||
4.04.00.0069 | 之後的DirectX 3.0加入了Direct3D 4.04.00.0069 | 1996年 | ||
DirectX 3.0a | 4.04.00.0070 | Windows NT 4.0 SP3 |
1996年12月 | 最後支持Windows NT 4.0的版本 |
DirectX 3.0b | 4.04.00.0070 | 1996年12月 | 3.0a的一個小更新 糾正了一個日文版本下的漏洞 | |
DirectX 4.0 | 從未發佈[4] | |||
DirectX 5.0 | 4.05.00.0155 (RC55) | Windows NT 5.0的測試版本 | 1997年7月16日 | |
DirectX 5.2 | 4.05.01.1600 (RC00) | 為Windows 95發佈的版本 | 1998年5月5日 | |
4.05.01.1998 (RC0) | 只用於Windows 98 | 1998年6月25日 | ||
DirectX 6.0 | 4.06.00.0318 (RC3) | Windows CE上的Dreamcast版本 | 1998年8月7日 | |
DirectX 6.1 | 4.06.02.0436 (RC0) | 1999年2月3日 | ||
DirectX 6.1a | 4.06.03.0518 (RC0) | 只用於Windows 98 SE | 1999年5月5日 | |
DirectX 7.0 | 4.07.00.0700 (RC1) | 1999年9月22日 | ||
4.07.00.0700 | Windows 2000 | 2000年2月17日 | ||
DirectX 7.0a | 4.07.00.0716 (RC0) | 2000年3月8日 | ||
4.07.00.0716 (RC1) | 2000年 | |||
DirectX 7.1 | 4.07.01.3000 (RC1) | 只用於Windows Me | 2000年8月14日 | 2D與3D元件分離的最後一版(IDirectDraw7與IDirect3D7) |
DirectX 8.0 | 4.08.00.0400 (RC10) | 2000年11月12日 | 2D與3D元件整合的第一個版本(IDirectGraphic8)與Vertex Shader與Pixel Shader | |
DirectX 8.0a | 4.08.00.0400 (RC14) | 最後支持Windows 95的版本 | 2001年2月5日 | |
DirectX 8.1 | 4.08.01.0810 | Windows XP,Windows Server 2003和Xbox特別版 | 2001年10月25日 | |
4.08.01.0881 (RC7) | 這個版本用於更早的操作系統 (Windows 98, Windows Me和Windows 2000) |
2001年11月8日 | ||
DirectX 8.1a | 4.08.01.0901(RC?) | 2002年 | 這個版本升級了Direct3D(D3d8.dll) | |
DirectX 8.1b | 4.08.01.0901 (RC7) | 2002年6月25日 | 這個版本修正了DirectShow在Windows 2000上的一個漏洞(Quartz.dll) | |
DirectX 8.2 | 4.08.02.0134 (RC0) | 和DirectX 8.1b一樣,但包含了DirectPlay 8.2 | 2002年 | |
DirectX 9.0 | 4.09.00.0900 (RC4) | 2002年12月19日 | (IDirectGraphic9)與HLSL | |
DirectX 9.0a | 4.09.00.0901 (RC6) | 2003年3月26日 | ||
DirectX 9.0b | 4.09.00.0902 (RC2) | 2003年8月13日 | ||
DirectX 9.0c | 4.09.00.0903 | 只用於Windows XP SP2 | ||
4.09.00.0904 (RC0) | 2004年8月4日 | |||
4.09.00.0904 | Windows XP SP2,Windows Server 2003 SP1,Windows Server 2003 R2和Xbox 360 | 2004年8月6日 | ||
DirectX 9.0c - 雙月更新 | 4.09.00.0904 (RC0) | 2006年10月更新是最後支持Windows 98、Windows Me和Windows 2000的版本。[5]2005年12月更新和2006年2月更新增加了對XML的支持 | 兩月更新一次,開始於2004年10月,直到現在,最新版本:DirectX 9.0c Redist Jun 2010(2010年6月) | |
DirectX 10.0 | 6.00.6000.16386 | Windows Vista | 2006年11月30日 | 開始導入DXGI(DirectX Graphics Infrastructure)架構 |
DirectX 10.1 | 6.00.6001.18000 | Windows Vista Service Pack 1與Windows Server 2008 | 2008年2月4日 | |
DirectX 11 | 6.01.7600.16385 | Windows 7,Windows Server 2008 R2 | 2009年7月22日 | 與Windows 7 RTM一同釋出 |
6.01.7601.17514 | Windows 7 SP1,Windows Server 2008 R2 SP1 | 2010年11月23日 | KB976932,與Windows 7 SP1一同釋出 | |
6.00.6002.18107 | Windows Vista SP2,Windows Server 2008 SP2 | 2009年10月26日 | KB971512 | |
DirectX 11.1 | 6.02.9200.16384 | Windows 8 | 2012年10月26日 | 與Windows 8一同釋出,Windows 7 SP1升級後部分支持 |
DirectX 11.2 | 6.03.9600.16384 | Windows 8.1、Windows RT 8.1、Windows Server 2012 R2 | 2013年10月18日 | 包含於操作系統,無獨立程序包 |
DirectX 12 | 10.00.10240.16384 | Windows 10 | 2015年1月18日 | 包含於操作系統,無獨立程序包,並支持Xbox One |
DirectX 12 Ultimate | 10.00.19041.0928 | Windows 10 build 19042 | 2020年11月10日 | 加入DirectX Raytracing Tier 1.1 光線追蹤,VRS(可變速率著色),Mesh Shader,Sampler Feedback(取樣器反饋) |
硬件製造商要為每款硬件產品編寫驅動程序來支持DX,甚至一些硬件商只編寫DX的驅動,這意味着要使用這款硬件就必須安裝DX,早期的DirectX版本自帶了所有支持DX硬件的驅動程序,後來用戶可以通過自動更新系統下載適合的驅動。
DX10之前的所有DirectX版本都保持向下相容性,即新版本相容舊版本,例如安裝了DX9的電腦,依然可以執行由DX6編寫的程式碼。安裝了DX11/12的電腦,依然可以執行由DX9C編寫的程式碼,不過小部分依然需要安裝DX9C。
2002年間,微軟發布一個兼容.NET Framework的DX版本,因而允許程序員充分利用.NET的特性編寫DX程序,這套API被稱為Managed DirectX(MDX)。2005年微軟在DirectX 9.0c版本上開發一套正對.NET平台的Managed API,即Direct 9.0 for Managed Code 1.0(簡稱Managed DirectX)。
2005年12月、2006年2月、4月、8月,微軟相繼發布DirectX的更新版本,使之支持.NET 2.0框架。然而.NET 2.0版本至今只是個測試版。
GDC 2006期間,微軟終止開發Managed DirectX,改推出了XNA framework,是一組基於Managed DirectX,幫助程序員更輕鬆的編寫遊戲的框架,將DirectX,Shader,高級着色器語言(HLSL)以及其他工具整合到一起。2006年12月11日,微軟對Windows XP提供免費的XNA Game Studio Express RTM的下載服務。
Windows Vista及以上的操作系統才支持DirectX 10(也就是說,DirectX 9是最後一個支援Windows XP的版本),比起之前的版本,DX10做了重大的變動:增加了XInput用以處理XBOX 360手柄的支持,DirectSound將被XACT替換。DirectX 10也減少了對音效硬件加速的支持,更多的使用CPU來運算音效。
Direct3D 10.1是DirectX 10的改進版,隨Vista SP1出貨。
DirectX 11是DirectX 10的改良,只對效能和擴展性進行最佳化,主要改進在提供Shader Model 5.0,加入對MSAA的直接采樣控制。大幅改進多執行緒效能,提供三個獨立的介面。進一步提高紋理壓縮,鑲嵌(tessellation)處理的效能[6][7],並加入Compute Shader(DirectCompute)來支援GPGPU,提供新版HLSL語言。
DirectX 11.1是DirectX 11的改進版,隨Windows 8出貨。Windows 7 SP1升級後部分支持。
DirectX 11.2是DirectX 11.1的改進版,隨Windows 8.1出貨。
DirectX 12將更好支援多核心、多執行緒的最佳化,降低GPU處理瓶頸,並強化跨平台功能,可有效支援微軟各式平台,並提升硬體功耗表現。隨Windows 10 出貨並支持Xbox One。
2019年3月13日,微軟於DirectX Developer Blog表示,未來魔獸世界8.1.5的遊戲更新將使Windows 7 平台用戶也能體驗 DirectX 12的多線程渲染優勢,並提高遊戲效能。且未來陸續也會有其他廠商推出相關更新,將更多的 D3D12 遊戲移植到 Windows 7。[8]
縱觀DX的各個版本,X都是一個核輻射警告標誌或一隻螺旋槳葉片。這個設計引發了不小的爭議,因為DX計劃的原名叫做「曼哈頓計劃」,這個名稱來源於美國的核武器研製計劃,最終美國使用核武器轟炸了日本的廣島和長崎,這在暗示DX產品要替代日本在電子遊戲方面的霸主地位。這一說法被微軟公開否定,微軟表示這只是出於藝術設計的考慮。[9]