什么是DirectX
副标题#e#
DirectX,(Direct eXtension,简称DX)是由微软公司成立的游戏编程接口。由C++编程语言实现,遵循COM。因为DX的成果比OpenGL更全面而被大都PC游戏开拓商回收。最新版本为DirectX 10.1和DirectX 9Ex (2006年11月30日),两者均只可于Windows Vista上利用。
DirectX 6之前,在Windows 3.1至Windows 98SE 之间,曾有WinGAPI的呈现。许多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的步队也在壮大。
#p#副标题#e#
由此派生出的“出格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日 | 2D与3D元件疏散的最后一版(IDirectDraw7与IDirect3D7) |
DirectX 8.0 | 4.08.00.0400(RC10) | 2000年11月12日 | 2D与3D元件集成的第一个版本(IDirectGraphic8) | |
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日 | (IDirectGraphic9) | |
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的版本。[3]2005年12月更新和2006年2月更新增加了对XML的支持 | 两月更新一次,开始于2004年10月,直到此刻,最新版本:2008年6月7日 | |
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 | ? | ? | 2009年第四季(估量) |
注释:
#p#分页标题#e#
DirectX 4从未宣布过,Raymond Chen在他的书《The Old New Thing》中表明说,DirectX 3宣布之后,微软开始同时开拓DX4和5,只是增加一些小特性的DX4版本会在短时间内完成,而DX5会增加大量新内容,游戏开拓者对DX4新特性的失望导致了DX4打算的停顿。之后,微软将重心完全转移到DX5开拓上。[4]
#p#分页标题#e#
版本号由微软的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。[5]
各类API
#p#分页标题#e#
除了DX,仍然有很多其他的API选择,然而,没有一种可以完全等同于DX的成果,但可以组合起来利用,譬喻SDL、OpenMAX、OpenML、OpenGL、OpenAL、FMOD等。这些往往擅长于某个方面,并且支持多平台,且多是开源的。也有一些替代品旨在经办DX的全部成果,好比Wine。
DirectX符号的改观
纵观DX的各个版本,X都是一个核辐射告诫符号或一只螺旋桨叶片。这个设计激发了不小的争议,因为DX打算的原名叫做“曼哈顿打算”,这个名称来历于美国的核兵器研制打算,最终美国利用核兵器轰炸了日本的广岛和长崎,这在体现DX产物要替代日本在电子游戏方面的霸主职位。这一说法被微软公开否认,微软暗示这只是出于艺术设计的思量。.[6]
DirectX 1.0–6.0 |
DirectX 7.0 |
DirectX 8.0 |
DirectX 9.0 |
DirectX 10.0 |