DirectX
维库,知识与思想的自由文库
| DirectX | |
|
目前DirectX的正式标志 |
|
| 开发者 | Microsoft |
|---|---|
| 最新穩定版 | 10.0 / 2006年11月30日 |
| 操作系统 | Microsoft Windows |
| 类型 | 应用程序框架 |
| 许可协议 | EULA |
| DirectX Homepage | |
DirectX,(Direct eXtension,简称DX)是由微软公司建立的游戏编程接口。由C++编程语言实现,遵循COM。因为DX的功能比OpenGL更全面而被多数PC游戏开发商采用。最新版本為DirectX 10和DirectX 9Ex (2006年11月30日),兩者均只可於Windows Vista上使用。
很多Windows游戏需要DirectX。DirectX包含DirectGraphic、DirectPlay、DirectSound、DirectInput、DirectSetup等部份。Direct3D與DirectDraw已整合成DirectGraphic,而DirectShow亦已自原本的DirectX SDK中移到Windows平台SDK了。
Redist Package 是媒体开发底层API,通过它可以开发游戏和其它多媒体应用程序。
目录 |
[编辑] 元件
DirectX 組成的元件有:
- DirectX Graphics,包含二組 APIs(DirectX 8.0 onwards):
- DirectDraw:用於繪製 2D Graphics(en:raster graphics)(不建議使用,雖然目前仍有大量的使用者)。
- Direct3D(簡稱D3D):用於繪製3D圖形(3D graphics)
- DirectInput:用於結合鍵盤、滑鼠、搖桿,或其它的遊戲控制器(Not updated since 8 except for XInput,專門提供給 Xbox360 的控制器。並建議以WM INPUT取代鍵盤與滑鼠。)
- DirectPlay:用於網路遊戲連線溝通(配合DirectInput使用,上次的更新版本是version 8. 目前已不建議使用)
- DirectSound:用於錄音,並且記錄波形音效(waveform sound)
- DirectSound3D(簡稱DS3D):用於3D音效(3D sounds)的錄音。
- DirectMusic:用於DirectMusic Producer的錄音。
- DirectX Media:包含DirectAnimation 可用於2D 的網頁動畫(web animation),DirectShow可支援多媒體錄音(multimedia playback)以及資料流媒體(en:streaming media),DirectX在網頁上的轉換,還有Direct3D 可保留3D graphics更清晰的解析。DirectShow 亦包含有en:DirectX plugins 用於en:audio signal processing以及 DirectX Video Acceleration加速影音音效(video playback)。
- DirectX Media Objects:支援資料流物件(streaming objects),像是編碼(encoders)、解碼(decoder)以及效果(effects)。
- DirectSetup:用於DirectX 元件的安裝,並非完全是 API。
[编辑] 历史
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].
[编辑] 发布历史
| DirectX版本 | 版本编号 | 操作系统 | 日期 |
|---|---|---|---|
| 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 最后支持Windows NT 4.0的版本 |
1996年12月 |
| DirectX 3.0b | 4.04.00.0070 | 3.0a的一个小更新 纠正了一个日文版本下的漏洞 |
1996年12月 |
| DirectX 4.0 | 从未发布 | ||
| 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日 |
| DirectX 8.0 | 4.08.00.0400 (RC10) | 2000年11月12日 | |
| 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?) | 这个版本升级了Direct3D(D3d8.dll) | 2002年 |
| DirectX 8.1b | 4.08.01.0901 (RC7) | 这个版本修正了DirectShow在Windows 2000上的一个漏洞(Quartz.dll) | 2002年6月25日 |
| 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日 | |
| 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) | 12月 06号更是最后支持Windows 98 和Windows Me的版本。12月 05号更新和2月 06号更新增加了对XML的支持 | 两月更新一次,开始于2004年10月,直到现在,最新版本:2007年7月27日 |
| DirectX 10.0 | 6.0.6000.16386 | 只支持Windows Vista | 2006年11月30日 |
注释:
- DirectX 4从未发布过,Raymond Chen在他的书《The Old New Thing》中解释说,DirectX 3发布之后,微软开始同时开发DX4和5,只是增加一些小特性的DX4版本会在短时间内完成,而DX5会增加大量新内容,游戏开发者对DX4新特性的失望导致了DX4计划的搁浅。之后,微软将重心完全转移到DX5开发上。[3]
- 版本号由微软的DxDiag工具获得(4.09.0000.0900以及更高版本),编号统一使用 x.xx.xxxx.xxxx 格式,而微软网站上给出的编号使用 x.xx.xx.xxxx 格式,如果网站上编号为4.09.00.0904,那么在电脑上安装后,会变为4.09.0000.0904。
[编辑] 兼容性
硬件制造商要为每款硬件产品编写驱动程序来支持DX,甚至一些硬件商只编写DX的驱动,这意味着要使用这款硬件就必须安装DX,早期的DirectX版本自带了所有支持DX硬件的驱动程序,后来用户可以通过自动更新系统下载适合的驱动。
一些驱动只支持某个版本的DX,DX10之前,所有DirectX版本都保持向前兼容性,即新版本兼容旧版本,例如安装了DX9的电脑,依然可以运行由DX6编写的游戏。
[编辑] .NET Framework
2002年间,微软发布了一个DX版本兼容了.NET Framework,因而允许程序员充分利用 .NET的特性编写DX程序,这套API被称为Managed DirectX(MDX)
2005年12月、2006年2月、4月、8月,微软相继发布DirectX的更新版本,使之支持 .NET 2.0 框架。然而 .NET 2.0版本至今只是个测试版。
GDC 2006期间,微软推出了XNA框架,一个基于Managed DirectX,帮助程序员更轻松的编写游戏的框架,将DirectX,高级着色器语言 (HLSL)以及其他工具整合到一起。2006年12月11日,微软对Windows XP提供免费的XNA Game Studio Express RTM的下载服务。
[编辑] DirectX 10
Windows Vista是DirectX 10唯一支持的操作系统,比起之前的版本,DX10做了重大的变动:DirectInput将被XInput替换,DirectSound将被XACT替换。DirectX 10也减少了对音效硬件加速的支持,更多的使用CPU来运算音效。亦有谣言说微软打算发布一个补丁包使DX10支持XP,以此让更多的XP用户购买Vista。[4]
[编辑] 代替品
除了DX,仍然有许多其他的代替选择,然而,没有替代选择可以完全代替DX的功能,但可以组合起来使用,例如SDL、OpenMAX、OpenML、OpenGL、OpenAL、FMOD等。这些往往擅长于某个方面,而且支持多平台,且多是开源的。也有一些替代品旨在包揽DX的全部功能,比如Wine。
[编辑] DirectX标志的变更
纵观DX的各个版本,X都是一个核辐射警告标志或一只螺旋桨叶片。这个设计引发了不小的争议,因为DX计划的原名叫做“曼哈顿计划”,这个名称来源于美国的核武器研制计划,最终美国使用核武器轰炸了日本的广岛和长崎,这在暗示DX产品要替代日本在电子游戏方面的霸主地位。这一说法被微软公然否定了,他们表示,这只是处于艺术设计的考虑。.[5]
[编辑] 参见
- GDI (图形设备接口)
- GGI (通用图形接口)
- Graphics pipeline
- DxDiag
- DirectX plugin
- ActiveX
[编辑] DirectX代替品
[编辑] 外部連結
- 中关村在线 - 见证3D进化之路 DirectX发展历史回顾
- Microsoft's DirectX官方网站
- Microsoft's MSDN文档 & 资源中心
- GameDev'关于DX的资料
- DirectX 10 Wiki - DirectX 10的wiki网站,包括教程,例子,特效,新闻等。
| 微软公司 | |
|---|---|
| 桌面软件: | Windows (Windows歷史) • Office • Dynamics • Visual Studio • Money • Encarta • Expression |
| 服务器软件: | Windows Server • SQL Server • IIS • Exchange • BizTalk • Commerce • ISA Server • Systems Management |
| 技术: | 活动目录 • DirectX • .NET • Windows Media • PlaysForSure |
| 网络: | Windows Live • Office Live • MSNBC • ninemsn • MSN • Hotmail • Live Messenger • Spaces • Groups • Live ID • Ignition • CodePlex |
| 游戏: | Microsoft Game Studios • Zone • XNA • Xbox • Xbox 360 (Elite) • Xbox Live (Arcade • Marketplace) • Games for Windows (Live) • Live Anywhere • 帝国时代 • 微軟模擬列車 • 微軟模擬飛行 |
| 硬件: | Surface • Zune • MSN TV • 微软自然键盘 • IntelliType • IntelliPoint • LifeCam • LifeChat • SideWinder • 超级移动电脑 • Fingerprint • Audio System |
| 教育与认证: | 微软认证 • 微软开发者网络 • 微软教育联盟计划 • 微软签约授权 • 微软出版社 • 微软最有价值专家 • 微软创新联盟 |
| 董事会成员 | 巴尔默 • 凯什 • 杜伯伦 • 盖茨 • 吉尔玛特 • 哈斯廷斯 • 马夸特 • 诺斯基 • 庞克 • 雪利 |




