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的队伍也在壮大。