【简介】
DirectX(Direct eXtension,缩写为DX)是微软公司创建的多媒体编程接口和应用程序接口(API)。 DirectX 帮助游戏开发人员更高效地运行基于Windows 的游戏或多媒体程序,增强3D 图形和声音效果,并为设计人员提供通用的硬件驱动程序标准,从而无需为每个品牌的软件创建单独的驱动程序。也降低了用户硬件安装和配置的复杂度。 DirectX 广泛用于Microsoft Windows、Microsoft XBOX、Microsoft XBOX 360 和Microsoft XBOX ONE 视频游戏开发。
功能介绍
Microsoft DirectX 使基于Windows 的计算机成为运行和显示具有丰富多媒体元素(例如全彩色图形、视频、3D 动画和丰富音频)的应用程序的理想平台。 DirectX 包括安全性和性能更新,以及跨所有技术的许多新功能。应用程序可以使用DirectX API 访问这些新功能。
功用
从字面上看,Direct 就是直接的意思,后面的X 可以表示很多意思。从这一点来看,我们可以看出DirectX的到来是为了给很多软件提供直接的服务。
例如,硬核玩家在DOS下玩游戏时,往往需要在安装后设置声卡的品牌和型号,然后设置IRQ(中断)和I/O(输入)。如果output(输出)或DMA(访问模式)设置不正确,游戏声音将不会输出。这部分的设置不仅让玩家头疼,对游戏开发者来说更是一个更大的问题。
为了使游戏能够在许多计算机上正确运行,开发人员必须在游戏制作之初收集市场上的所有声卡硬件数据,并根据需要的不同API(应用程序编程接口)创建不同的驱动程序。这对游戏公司来说很困难,因为当时多媒体游戏还很少。微软认识到这个问题并推出了——DirectX,这是所有制造商通用的应用程序接口。只要您的游戏是根据DirectX 开发的,无论您的显卡或声卡型号如何,您都可以玩它们并获得最佳效果。当然,这假设你的显卡和声卡驱动程序支持DirectX。
组成
由于其性质,DirectX 分为四个部分:显示、声音、输入和网络。
显示一些
显示部分是图形处理的关键,分为DirectDraw(DDraw)和Direct3D(D3D),前者主要负责加速2D图像。这包括很多方面。使用DDraw 播放mpg、播放DVD 电影、查看照片、玩迷你游戏等等。所有划线部分都可以理解,因为它们使用了DDraw。后者主要负责显示CS中的场景、人物以及FIFA中的人物等3D效果。所有这些都使用DirectX的Direct3D。
声音部分
声音部分最重要的API是DirectSound,它处理声音播放和混合,增强3D音效,还提供录音功能。前面显示的声卡兼容性示例是使用DirectSound 解决的。
输入部分
输入部分DirectInput 支持许多游戏输入设备,并允许您确保这些设备发挥最佳性能并发挥最佳功能。除了键盘和鼠标之外,您还可以连接控制器、操纵杆、模拟器等。
网络部分
DirectPlay的网络部分主要是为具有网络功能的游戏而开发的,提供了TCP/IP、IPX、调制解调器、串口等多种连接方式,让玩家可以使用多种网络方式进行战斗。它还提供网络对话功能和保密措施。
分类
DirectX不仅仅是一个图形API,而是微软开发的一个广泛使用的API,支持直接图形(Direct 3D+Direct Draw)、直接输入、直接播放、直接声音、直接显示、直接设置,包括直接媒体。它提供了一套完整的多媒体界面解决方案,包括对象和其他组件。然而出色的3D图形性能却让其他方面显得乏善可陈。 DirectX最初是为了弥补Windows 3.1系统中图形和声音处理能力的不足而开发的,但现在它已经发展成为一个对整个多媒体系统的各个方面都具有决定性影响的接口。 DirectX 是一组低级应用程序编程接口(API),为Windows 程序提供高性能、硬件加速的多媒体支持。 Windows 支持DirectX 8.0,可增强计算机的多媒体功能。使用DirectX 访问图形和声卡功能使程序能够提供逼真的三维(3D) 图形以及身临其境的音乐和声音效果。 DirectX 允许程序轻松确定计算机硬件的功能并相应地设置程序参数。该程序使多媒体软件程序能够在具有DirectX兼容硬件和驱动程序的基于Windows的计算机上运行,从而使多媒体程序能够充分利用高性能硬件。 DirectX 包含一组API,可提供对高性能硬件(例如3D 图形加速芯片和声卡)的高级功能的访问。这些API 控制低级功能(包括二维(2D) 图形加速)、支持输入设备(例如操纵杆、键盘和鼠标)并控制音频混合和声音输出。构成DirectX 的以下组件支持低级功能。 Microsoft DirectDraw Microsoft DirectDraw API 提供对计算机视频适配器的高速硬件功能的快速访问。支持在所有视频适配器上显示图形的标准方式,在使用加速驱动程序时提供更快、更直接的访问。 DirectDraw 为程序(例如游戏和2D 图形包)和Windows 系统组件(例如数字视频编解码器)提供了一种独立于设备的方式来访问特定显示设备的功能,而不需要用户提供该设备使其可访问。功能性。
Microsoft Direct3D API (Direct3D) : 为大多数新型视频适配器中内置的3-D 色彩校正功能提供了一个接口。 Direct3D 是一种低级3D API,它为软件程序提供独立于设备的方法,以便与加速器硬件进行高效、强大的通信。 Direct3D 包括对专有CPU 指令集的支持,为新计算机提供额外的加速支持。
Microsoft DirectSound API : 提供程序和音频适配器的混合、声音播放和声音捕获功能之间的链接。 DirectSound 提供低延迟混音、硬件加速以及从声音设备直接访问多媒体软件程序。提供此功能的同时保持与现有设备驱动程序的兼容性。
Microsoft DirectMusic API : 是DirectX 的交互式音频组件。与捕获和播放数字声音样本的DirectSound API 不同,DirectMusic 处理数字音频和基于消息的音乐数据,这些数据由声卡或其内置软件合成器转换为数字音频。 DirectMusic API 支持乐器数字接口(MIDI) 格式以及压缩和未压缩数字音频格式的输入。 DirectMusic 使软件开发人员能够创建身临其境的动态音轨,这些音轨不仅可以响应用户输入的直接变化,还可以响应软件环境中的各种变化。
Microsoft DirectInput API : 为游戏提供高级输入功能,处理来自操纵杆和其他相关设备(例如鼠标、键盘和电源反馈游戏控制器)的输入。
Microsoft DirectPlay API: 支持通过调制解调器、Internet 或LAN 连接到游戏。 DirectPlay 简化了对通信服务的访问,并为游戏提供了一种不受协议或在线服务限制的相互通信方式。 DirectPlay 提供各种游戏服务,可简化多媒体播放器游戏的初始化,同时还支持可靠的通信协议,确保关键游戏数据不会通过网络丢失。 DirectPlay 8.0 中的一项新功能是支持通过网络进行语音通信。这极大地增强了多媒体播放器中基于团体的游戏的娱乐性。该组件还提供与玩游戏的其他用户交谈的能力,使团体游戏更具吸引力。
Microsoft DirectShow API : 提供计算机和Internet 服务器上多媒体文件的高质量捕获和播放。 DirectShow 支持多种音频和视频格式,包括高级流格式(ASF)、音频视频交错(AVI)、数字视频(DV)、动画专家组(MPEG)、MPEG 音频第3 层(MP3) 和Windows Media支持音频。 /video (WMA/WMV) 和WAV 文件。 DirectShow 还提供视频捕获、DVD 播放、视频编辑和混合、硬件加速视频解码以及广播模拟和数字电视信号的调节。
发展历史
DirectX 1.0
当第一代DirectX发布时,没有多少硬件支持它。基本上,缺乏硬件支持是其广泛采用的最大障碍。
DirectX 1.0版是第一个可以直接读取硬件信息的程序。通过提供对图形硬件功能(例如显示卡上的块移动)以及基本声音和输入设备功能(功能)的更直接访问来加速开发实现二维(2D) 图像的游戏。第一代DirectX 并未包含所有3D 功能,仍处于起步阶段。
直接X2.0
DirectX 2.0改进了一些二维图形,添加了动态效果,并引入了Direct 3D技术。这样看来,DirectX 2.0 与DirectX 1.0 有很大不同。 DirectX 2.0 使用两种模拟方法来加速三维(3D) 图像的计算:平滑模拟和RGB 模拟。 DirectX 2.0 还具有更加用户友好的设置过程,并修复了应用程序界面的许多问题。自DirectX 2.0 以来,整个DirectX 设计架构已基本原型化。
直接X3.0
DirectX 3.0 于1997 年发布,紧接着Windows 95 的最后一个版本发布后不久。大约在这个时候,3D游戏开始流行,DirectX逐渐得到软件和硬件制造商的认可。 1997年,出现了三个应用程序接口标准:专业的OpenGL接口、微软的DirectX D接口和3DFX的Glide接口。当时3DFX是实力最强的显卡厂商,自然其Glide接口也是应用最广泛的。但随着3DFX的衰落和Voodoo显卡的没落,Glide界面逐渐消失。
DirectX 3.0是DirectX 2.0的简单升级版本,与DirectX 2.0非常相似。包含对DirectSound(用于3D 声音功能)和DirectPlay(用于游戏/网络)的多项更改和升级。 DirectX 3.0 集成了更简单、不太成熟的3D 效果。
DirectX 5.0
微软没有推出DirectX 4.0,他们直接推出了DirectX 5.0。该版本对Direct3D带来了重大改变,添加了雾效果和alpha混合等3D特效,以提高3D游戏中的空间感和真实感。它还添加了S3 的纹理压缩技术。
同时,DirectX 5.0还改进了其他组件,例如改进的声卡和游戏控制器,以支持更多设备。因此,DirectX从演进到DirectX 5.0之后才算真正成熟了。目前,DirectX 的性能与其他3D API 相当,并且很可能稍后会赶上。
直接X6.0
当DirectX 6.0推出时,其最大的竞争对手之一Glide逐渐衰落,DirectX得到了大多数厂商的认可。 DirectX 6.0增加了双线性过滤、三线性过滤等优化3D图像质量的技术,游戏中的3D技术逐渐成熟。
直接X7.0
DirectX 7.0最大的特点就是支持TL(中文名:“坐标变换与光源”)。 3D 游戏中的每个对象都有坐标,并且这些坐标会随着对象的移动而发生变化。这需要场景+物体和灯光。没有光,就无法实现3D 对象性能。无论是实时3D游戏还是3D图像渲染,带光照的3D渲染都是最消耗资源的。 OpenGL中存在相关技术,但从未出现在消费类硬件上。
在TL 之前,位置变换和光照需要CPU 计算。 CPU 速度越快,游戏性能就越流畅。使用TL功能后,这两种效果的计算都由显卡的GPU来计算,从而将CPU从繁重的工作中解放出来。这意味着,使用TL 显卡和DirectX 7.0,即使没有快速的CPU,您也可以流畅地运行3D 游戏。
直接X8.0
DirectX 8.0的推出彻底改变了显卡,首次引入了“像素渲染”的概念,它同时具有像素渲染引擎(像素着色器)和顶点渲染引擎(顶点着色器)。动态光影特效。与仅硬件TL实现的固定光影变换相比,VS和PS单元更加灵活,使GPU成为真正的可编程处理器。这意味着程序员可以使用它们更轻松地构建3D 场景。 VS 和PS 渲染可以轻松在水面上创建逼真的动态波纹光影效果。至此,DirectX的权威地位终于确立。
直接X9.0
2002年底,微软发布了DirectX9.0。 DirectX 9中PS单元的绘图精度已经达到浮点精度,传统的硬件TL单元也被废除。新的VertexShader(顶点着色器引擎)编程比以前复杂得多。新的VertexShader 标准添加了过程控制和常量,将每个程序的着色指令数量增加到1024 条。
PS 2.0采用完全可编程的架构,允许实时计算纹理效果和动态纹理贴图,而不占用显存。理论上也可以无限地提高材质贴图分辨率的精度。 28条硬件指令可以同时操作6种材质,而PS2.0支持160条硬件指令,可以同时操作16种材质。新的高精度浮点数据规范允许使用多个纹理贴图。可操作指令可设置为任意长度,轻松实现电影级的显示效果。
VS 2.0 通过增加Vertex 程序的灵活性,显着提高了VS 以前版本(DirectX8)的性能,允许您用通用的程序替换以前的专用着色程序,并添加了循环算术指令的添加,大大提高了效率。减少工作时间,提高加工效率。将着色指令的数量从128 条扩展到256 条。
增加了处理浮点数据的能力,以前只能处理整数,提高了渲染精度,并使最终处理的颜色格式达到电影级别。突破了此前限制PC图形和图像质量的数学精度围墙,每条渲染管线均升级为128位浮点颜色,让游戏程序员更轻松地创造出更精美的效果。
直接X9.0c
DirectX 9.0c 相比其前辈DirectX 9.0b 和Shader Model 2.0 最大的改进是引入了对Shader Model 3.0 的全面支持,其中包括两种着色语言规范:Pixel Shader 3.0 和Vertex Shader 3.0。例如,DirectX 9.0b中的着色器模型2.0支持的顶点着色器指令的最大数量仅256个,像素着色器指令的最大数量仅支持96个。最新的着色器模型3.0将顶点和像素着色器的最大指令数显着增加到65535条,并包括新的动态程序流控制、置换贴图、多渲染目标(MRT)、次表面散射和添加的软阴影。凭借柔和阴影、环境和地面阴影以及全局照明等技术功能,GeForce 6、GeForce 7 系列和Radeon Ready 能够应对复杂的游戏。在电影质量的环境中移动的世界和栩栩如生的角色。
因此,DirectX 9.0c和Shader Model 3.0标准的推出代表了DirectX发展的一个重要转折点。在DirectX 9.0c中,Shader Model 3.0解除了指令限制,添加了置换贴图等新功能,并添加了致力于提高游戏执行效率和质量的功能。 Shader Model 3.0开始改变人们对游戏的思考方式,从单纯追求速度转向兼顾游戏的图像质量和运行速度。因此,Shader Model 3.0将对游戏行业产生重大影响。
直接X10.0
它包含在Windows Vista 操作系统中,无法单独下载。
新的DirectX 提供更好的图形、可扩展的多人游戏和更好的音频。增强的DirectDraw 和Direct3D 接口简化了应用程序扩展并提高了性能。改进的图形创建工具使创建最佳3D 角色和环境变得更加容易,像素化的光和阴影使图像更加逼真。 DirectSound 和DirectMusic 已得到增强,以简化应用程序扩展。 DLS2 音频合成功能提高了乐器音频的真实感。 DirectPlay 提高了多人游戏的性能和可扩展性。编程接口提供实时音频/视频合成和即时编辑。 DirectShow 支持读取和写入Windows Media 音频和视频(WMA 和WMV)。 Microsoft TV 技术支持数字电视节目。当然,重点是一些新游戏需要它。 DirectX Redist 通常每两个月更新一次,可以替换以前发布的旧版本,并且适用于Windows XP、Windows Server 2003、Windows Vista 和其他操作系统。不支持Windows 9x/2000。现代3D 游戏和其他应用程序通常需要新的DirectX 界面,因此强烈建议更新。
Vista DX10 用户也需要。
您的显卡支持的DirectX版本是确定您的显卡性能以及选择适合您的显卡产品的标准。
直接X10.1
与之前的DX 版本一样,DX10.1 也是DX10 的超集,因此它支持DirectX 10 的所有功能,同时支持更多功能并提供更高的性能。
DX10.1 的主要改进是改进了着色器资源访问功能。这使您在使用多样本AA 读取样本时可以更好地控制。此外,DX10.1 还允许创建自定义下采样滤波器。
DX10.1还增加了更新的浮点混合功能,更加针对渲染目标,并添加了新的渲染目标混合形式,允许渲染目标实现独立混合。阴影一直是游戏中重要的特效,Direct3D 10.1改进的阴影过滤功能有望进一步提高图像质量。
性能方面,DirectX 10.1支持多核系统以获得更高的性能。 Direct3D 10.1 通过减少渲染、反射和散射期间的API 调用数量,显着提高了性能。
其他方面,DX10.1带来了多项改进,包括32位浮点过滤,可提高渲染精度并提高HDR渲染质量。对抗锯齿的完全应用控制也是DX10.1的一大亮点。应用程序将能够控制多重采样和超级采样的使用,并选择在特定场景中显示哪些采样模板。 DX10.1 需要至少1 个像素四元采样。
DX10.1 还引入了更新的驱动程序模型WDDM 2.1。与DX10中的WDDM2.0相比,2.1有一些重要的改进。
首先是更多的内容转换能力。 WDDM2.0支持命令或三角处理后的内容转换,而WDDM2.1允许立即发生内容转换。由于GPU同时并行处理多个线程,内容转换的即时性不仅保证了转换质量,还提高了GPU效率并减少了延迟。此外,WDDM 2.1支持基于进程的虚拟内存分配,因此GPU和驱动程序处理页面错误的方式也更加成熟。
微软计划在未来两周内(2008 年7 月中旬)发布新一代API:DirectX 11。据消息人士透露,微软计划在7 月22 日的Gamefest 2008 上宣布新一代API。关于DirectX 11 的最新消息是,NVIDIA 将在8 月底的NVISION 08 大会上讨论DirectX 11。
由微软主办的Gamefest 2008 大会将于7 月22 日至23 日在西雅图举行。 Gamefest 2008大会是微软一年一度的游戏技术讨论盛会,因此有关下一代游戏技术接口API的新闻显然是必看的话题。
DirectX 11引入的最大的新技术特性无疑是曲面细分/置换。我们还听说多线程渲染和计算着色器也将是DirectX 11 的关键元素。据说DirectX 11还引入了着色器模型5.0。具体细节尚不清楚,并且尚未提及对光线追踪和光栅化技术的支持。
直接X11
Microsoft 将于2009 年1 月9 日星期五全面提供Windows 7 客户端Beta 1 测试。此前一天,即1月8日,微软将发布Windows 7服务器版的首个Beta 1测试版。
一些安装了它的用户发现,微软发布的Windows 7测试版已经包含了DirectX 11。作为3D图形接口,DirectX 11不仅支持未来的DX11硬件,而且还向后兼容当前的DirectX 10和10.1硬件。 DirectX 11 添加了新的计算着色器技术,使GPU 能够从事更通用的计算任务,而不仅仅是3D 运算,从而使开发人员能够更好地使用GPU 作为并行处理器。
DirectX 11 已包含在微软发布的Windows 7 beta 中
此外,DirectX 11还支持曲面细分技术,让开发者能够创建更加细致、流畅的模型,实现高质量的实时渲染和预渲染场景。多线程是DirectX 11 的另一大亮点。 DX11可以更好地利用多线程资源,让游戏能够更高效地利用多核处理器。
DirectX11.1
Microsoft 于2011 年10 月15 日发布了一份白皮书“Windows 开发者预览版中的Windows 驱动程序模型增强”,详细介绍了Windows 8 中图形技术的改进。根据白皮书,Windows 8将支持新的显示驱动程序模型WDDM 1.2,该模型优于Windows 7的WDDM 1.1,但也将放弃对服务器系统上XDDM的支持,而完全支持WDDM。
DirectX最重要的方面当然是Direct3D 11.1的引入。这还包括平滑旋转、立体3D 和D3D11 视频等特色技术。微软表示,只要DirectX 可用,即使是较低端的硬件也可以通过Windows 8 实现更高的性能。
直接X11.2
2013年6月28日,微软发布了Directx 11.2(Alpha)。一项重要功能是允许游戏使用系统内存和视频存储来保存纹理数据。微软的Antoine Leblond 展示了内存的主要用途。存储9 GB 纹理数据而不是视频内存。这个功能对于未来的高分辨率游戏非常重要。不过,有一个问题是DirectX 11.2 不支持Windows 8 之前的操作系统,仅支持Windows 8.1 和下一代主机Xbox One。
直接X12
2014年3月21日,微软正式发布了新一代API DirectX 12。这并不是一个全新的设计,很多细节还没有公布,但至少它不是Mantle 的直接复制品。微软及其合作伙伴还设计了很多新东西。
DX12 中最重要的变化是低级API,它与AMD Mantle 非常相似,并且比以前具有更深的硬件抽象层,允许您同时减少CPU 和GPU 过载。具体来说,应用程序可以跟踪GPU管道,控制资源状态转换(例如,从渲染目标到纹理),控制资源重命名,减少API和驱动程序跟踪,预测属性等。我可以。
此外,DX12 显着提高了多线程效率,让您能够充分发挥多线程硬件的潜力。 DX11在这方面受到CPU性能的严重限制,主要是因为它无法有效利用多核。据微软称,微软的多核CPU利用率几乎呈线性增长,这意味着四核的价格可能是一核的近四倍。
DirectX 12 旗舰版
2020年3月20日,微软正式发布了新一代游戏图形API:Direc。
tX 12 Ultimate,而NVIDIA在第一时间表示旗下RTX 20**系列显卡都将完美支持。 资深玩家都知道,自从DirectX 7.0开始,每一代DirectX的版本更新都会带来图形技术的重大升级(例如DirectX 7.0首次支持硬件T&L、DirectX 8.0/8.1开始支持Pixel Shader&Vertex Shader……),那么这一次的DirectX 12 Ultimate(以下简称DX12U),相对DX12有些什么升级,又带来了什么次世代的黑科技呢? 四大重点黑科技,DX12U升级很实在