DirectX wiki

DirectX(Direct eXtension缩写DX)是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。其API包含DirectX GraphicsDirectPlayDirectSoundDirectInputDirectSetup等部分(Direct3DDirectDraw已集成成DirectX Graphics)、DirectMusicDirectPlay。被广泛使用于Microsoft Windows、Microsoft Xbox和Microsoft Xbox 360电子游戏开发,并且只能支持这些平台。目前最新版本为DirectX 11.1,创建在最新的Windows 8Windows 7操作系统之上。

DirectX 6之前,在Windows 3.1至Windows 98SE之间,曾有WinGAPI的出现。而DirectShow亦已自原本的DirectX SDK中移到Windows平台SDK了。Redist Package是媒体开发底层API,通过它可以开发游戏和其它多媒体应用程序。


组件[编辑]

DirectX组成的组件有:

  • DirectX Graphics,包含二组APIs(DirectX 8.0及之前):
  • DirectInput:用于结合键盘鼠标摇杆,或其它的游戏控制器(除了XInput,自8.0之后就没有再更新),专门提供给Xbox360的控制器。并建议以WM INPUT取代键盘与鼠标。
  • DirectPlay:用于网络游戏连接沟通(配合DirectInput使用,上次的更新版本是8.0,目前已不建议使用)。
  • DirectSound:用于录音,并且记录波形音效(waveform sound)。
  • DirectMusic:用于DirectMusic Producer的录音。
  • DirectX Media:包含DirectAnimation可用于2D的网页动画(web animation),DirectShow可支持多媒体录音(multimedia playback)以及数据流媒体(en:streaming media),DirectX在网页上的转换,还有Direct3D可保留3D图像更清晰的解析。DirectShow亦包含有DirectX plugins用于audio signal processing以及DirectX Video Acceleration加速影音音效(video playback)。
  • DirectX Media Objects:支持数据流对象(streaming objects),像是编码(encoders)、解码(decoder)以及效果(effects)。
  • DirectSetup:是DirectX的一部分,用于DirectX组件的安装,并非完全是API。DirectSetup的安装方式有标准安装(Standard Install)以及自选安装(Custom Install)二种,支持多国语言,还可以通过DirectX Setup Call back Function进行回调(callback)。DirectSetup可以解除安装。DirectSetup并非完全是API,还包含了DirectX Diagnostic Tool(DXDiag.exe)。DirectSetup还提供了DirectX Setup Get Version方法来检查DirectX的版本。
  • DirectCompute:通用计算API。
  • Direct2D:为DirectDraw的替代者,主要提供2D动画的硬件加速(浏览器内,只支持于Windows Vista/7以上),使用于Internet Explorer 9以上版本(含Windows 7的Internet Explorer 10及11测试版,或Windows 8的Internet Explorer 10或Windows 8.1 Preview的Internet Explorer 11测试版)。
  • DirectWrite:主要字体显示API,提供使用GPU令字体显示更为平滑,类似ClearType(只支持于Windows Vista/7/8/8.1以上)。

历史[编辑]

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中的设备上下文I和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”也作为微软XboxXbox 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版本 版本编号 [3] 操作系统 日期 备注
DirectX 1.04.02.0095 1995年9月30日 
DirectX 2.0未知 1996年 
DirectX 2.0a4.03.00.1096Windows 95和NT 4.01996年6月5日 
DirectX 3.04.04.00.0068 1996年9月15日 
4.04.00.0069之后的DirectX 3.0加入了Direct3D 4.04.00.00691996年 
DirectX 3.0a4.04.00.0070Windows NT 4.0 SP3
最后支持Windows NT 4.0的版本
1996年12月 
DirectX 3.0b4.04.00.00703.0a的一个小更新
纠正了一个日文版本下的漏洞
1996年12月 
DirectX 4.0从未发布[4]   
DirectX 5.04.05.00.0155 (RC55)Windows NT 5.0的测试版本1997年7月16日 
DirectX 5.24.05.01.1600 (RC00)Windows 95发布的版本1998年5月5日 
4.05.01.1998 (RC0)只用于Windows 981998年6月25日 
DirectX 6.04.06.00.0318 (RC3)Windows CE上的Dreamcast版本1998年8月7日 
DirectX 6.14.06.02.0436 (RC0) 1999年2月3日 
DirectX 6.1a4.06.03.0518 (RC0)只用于Windows 98 SE1999年5月5日 
DirectX 7.04.07.00.0700 (RC1) 1999年9月22日 
4.07.00.0700Windows 20002000年2月17日 
DirectX 7.0a4.07.00.0716 (RC0) 2000年3月8日 
4.07.00.0716 (RC1) 2000年 
DirectX 7.14.07.01.3000 (RC1)只用于Windows Me2000年8月14日2D与3D组件分离的最后一版(IDirectDraw7与IDirect3D7)
DirectX 8.04.08.00.0400 (RC10) 2000年11月12日2D与3D组件集成的第一个版本(IDirectGraphic8)与Vertex Shader与Pixel Shader
DirectX 8.0a4.08.00.0400 (RC14)最后支持Windows 95的版本2001年2月5日 
DirectX 8.14.08.01.0810Windows XPWindows Server 2003Xbox特别版2001年10月25日 
4.08.01.0881 (RC7)这个版本用于更早的操作系统
(Windows 98, Windows Me和Windows 2000)
2001年11月8日 
DirectX 8.1a4.08.01.0901 (RC?)这个版本升级了Direct3D(D3d8.dll)2002年 
DirectX 8.1b4.08.01.0901 (RC7)这个版本修正了DirectShow在Windows 2000上的一个漏洞(Quartz.dll)2002年6月25日 
DirectX 8.24.08.02.0134 (RC0)和DirectX 8.1b一样,但包含了DirectPlay 8.22002年 
DirectX 9.04.09.00.0900 (RC4) 2002年12月19日(IDirectGraphic9)与HLSL
DirectX 9.0a4.09.00.0901 (RC6) 2003年3月26日 
DirectX 9.0b4.09.00.0902 (RC2) 2003年8月13日 
DirectX 9.0c4.09.00.0903只用于Windows XP SP2  
4.09.00.0904 (RC0) 2004年8月4日 
4.09.00.0904Windows XP SP2,Windows Server 2003 SP1,Windows Server 2003 R2和Xbox 3602004年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 20102010年6月 
DirectX 10.06.00.6000.16386Windows Vista2006年11月30日开始导入DXGI(DirectX Graphics Infrastructure)架构
DirectX 10.16.00.6001.18000Windows Vista Service Pack 1与Windows Server 20082008年2月4日 
DirectX 116.01.7600.16385Windows 7,Windows Server 2008 R22009年7月22日Windows 7 RTM一同发布
6.01.7601.17514Windows 7 SP1,Windows Server 2008 R2 SP12010年11月23日KB976932,与Windows 7 SP1一同发布
6.00.6002.18107Windows Vista SP2,Windows Server 2008 SP22009年10月26日KB971512
DirectX 11.16.02.9200.16384Windows 82012年10月26日与Windows 8一同发布

兼容性[编辑]

硬件制造商要为每款硬件产品编写驱动程序来支持DX,甚至一些硬件商只编写DX的驱动,这意味着要使用这款硬件就必须安装DX,早期的DirectX版本自带了所有支持DX硬件的驱动程序,后来用户可以通过自动更新系统下载适合的驱动。

一些驱动程序只支持某个版本的DX,DX10之前,所有DirectX版本都保持向下兼容性,即新版本兼容旧版本,例如安装了DX9的计算机,依然可以运行由DX6编写的代码。

.NET Framework[编辑]

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版本至今只是个测试版。

G设备上下文 2006期间,微软终止开发Managed DirectX,改推出了XNA framework,是一组基于Managed DirectX,帮助程序员更轻松的编写游戏的框架,将DirectX,Shader,高级着色器语言(HLSL)以及其他工具集成到一起。2006年12月11日,微软对Windows XP提供免费的XNA Game Studio Express RTM的下载服务。

DirectX 10[编辑]

Windows Vista及以上的操作系统才支持DirectX 10(也就是说,DirectX 9 是最后一个支持 WindowsXP 的版本),比起之前的版本,DX10做了重大的变动:增加了XInput用以处理XBOX 360手柄的支持,DirectSound将被XACT替换。DirectX 10也减少了对音效硬件加速的支持,更多的使用CPU来运算音效。

Direct3D 10.1是DirectX 10的改进版,随Vista SP1出货。

DirectX 11[编辑]

DirectX 11是DirectX 10的改良,只对性能和扩展性进行优化,主要改进在提供Shader Model 5.0,加入对MSAA的直接采样控制。大幅改进多线程性能,提供三个独立的接口。进一步提高纹理压缩,镶嵌(tessellation)处理的性能[6][7],并加入了Compute Shader(DirectCompute)来支持GPGPU,提供新版HLSL语言,与 nVidia的 CUDA 功能类似。

DirectX 11.1是DirectX 11的改进版,随Windows 8出货。

DirectX 11.2是DirectX 11.1的改进版,随Windows 8.1出货。

各种API[编辑]

除了DX,仍然有许多其他的API选择,然而,没有一种可以完全等同于DX的功能,但可以组合起来使用,例如SDLOpenMAXOpenMLOpenGLOpenALFMOD等。这些往往擅长于某个方面,而且支持多平台,且多是开源的。也有一些替代品旨在包揽DX的全部功能,比如Wine

DirectX标志的变更[编辑]

纵观DX的各个版本,X都是一个核辐射警告标志或一只螺旋桨叶片。这个设计引发了不小的争议,因为DX计划的原名叫做“曼哈顿计划”,这个名称来源于美国的核武器研制计划,最终美国使用核武器轰炸了日本的广岛长崎,这在暗示DX产品要替代日本在电子游戏方面的霸主地位。这一说法被微软公开否定,微软表示这只是出于艺术设计的考虑。[8]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值