DirectX 11与DirectX 12的区别是什么?应该使用哪一个?
DirectX 12于2015年与Windows 10一起发布。随着它的发布,微软的DirectX 12为游戏玩家和游戏开发商开创了一个新时代。DirectX 12能够在提高GPU性能的同时减少CPU开销,很快就名声大噪。
然而,提高性能真的像从DirectX 11切换到DirectX 12一样简单吗?让我们看看DirectX 11和12之间的区别。
什么是微软的DirectX?
如中所述
我们对Microsoft DirectX的概述
,DirectX是用于处理与多媒体相关的任务的应用程序编程接口(API)的集合。这包括在Windows和Xbox等基于微软的平台上进行游戏编程。为了提供一些上下文,让我们简要介绍一下API。
API使两个或多个计算机程序可以相互通信,我们在
我们对API的概述
。把它想象成一部电话。如果你妈妈发短信给你一份杂货清单,你的手机会收到这些数据并显示给你。这基本上是一个API。
DirectX 11和DirectX 12之间有什么区别?
那么,DirectX 11和DirectX 12之间有什么区别呢?简单地说,DirectX 12是DirectX的最新版本。最明显的区别之一是它们与硬件的交互方式。大多数使用DirectX 11开发的游戏只使用两到四个
CPU核心
这些核心中的一个通常告诉GPU该做什么。
然后,游戏使用剩余的核心来处理各种CPU密集型设置,如游戏的粒子或绘制距离。另一方面,DirectX 12将CPU的工作负载分布在多个内核上,并允许每个内核同时与GPU通信。
DirectX 12还附带了一些花哨的功能。这包括异步计算和管道状态对象(PSO)。异步计算通过允许多个工作负载并行工作来提高GPU利用率。这基本上释放了GPU的全部潜力。
除了图形渲染,您的GPU还可以处理各种其他任务,例如运行机器学习算法。使用DirectX 11,GPU一次只能按特定顺序执行其中一项任务。当这种情况发生时,性能会受到影响,因为您的GPU资源没有得到有效使用。
把它想象成餐馆的服务员。当服务员为你点餐时,他们会问你想先喝什么。当你收到饮料后,他们会问你主菜想要什么。您的订单是分步骤执行的。在你吃主菜之前,服务员不会问你要什么甜点。虽然这是有效的,但它并没有达到应有的效率。
在计算中,不同的GPU资源将处理服务员的每个任务。在你收到饮料之前,完成主菜订单所需的GPU资源将闲置。有了DirectX 12的异步计算,服务员将能够像在快餐连锁店一样一次接受您的订单。这最大限度地提高了GPU的使用率,并提高了您的游戏性能。
DirectX 12还引入了管道状态对象(PSO)。使用DirectX 11,当游戏的几何图形提交给GPU进行渲染时,各种硬件设置负责解释和渲染这些数据。这被称为图形管道,以及GPU渲染帧时发生的数据输入和输出流。然而,DirectX 11的图形管道并不完美。
此管道包含不同状态的集合,包括光栅化状态、混合状态和深度模具状态以及其他组件。在DirectX 11中,这些不同状态之间存在依赖关系。因此,在定义前一个状态之前,无法完成一个状态。这降低了GPU利用率,并以性能为代价增加了CPU开销。
为了解决这个问题,DirectX 12引入了PSO,即描述整个图形管道状态的对象。PSO就像一个瓶子,里面包含了创建图像所需的各种状态和组件。这允许GPU预处理每个依赖状态,而不是基于当前图形管道不断重新计算状态。
这大大减少了DirectX 11中的CPU开销,并提高了性能。那么,这种差异看起来是什么样子的呢?根据微软的说法,DirectX 12可以将CPU开销减少50%,并将GPU性能提高20%。虽然这些都是一些实质性的改进,但这并不意味着你会看到同样的结果。
为什么从DirectX 11切换到DirectX 12并不直接
DirectX 11于2009年10月27日首次为Windows Vista发布。因此,随着2015年DirectX 12的推出,DirectX 11和DirectX 12之间还有六年的差距。在此期间,使用DirectX 11开发了数千款游戏。不幸的是,从DirectX 11迁移到DirectX 12绝非易事。
DirectX 11就是所谓的高级API。简单地说,高级API对开发人员来说更容易使用。其结果是稳定、精致且可玩的游戏。另一方面,DirectX 12是一个低级别的API,是与DirectX 11不同的野兽。虽然它允许开发人员在细粒度级别上微调优化,但它也需要广泛的知识才能使用。
也就是说,根据开发者对API的了解,用DirectX 12开发的游戏最终可能会有更糟糕的性能。DirectX 12有一些改进,但这实际上取决于开发人员实现它的能力。因此,许多开发人员选择使用DirectX 11等高级API。
DX 11与DX 12:你应该选择哪一个?
答案取决于一些事情,比如你想玩什么游戏。例如,《激战2》在DirectX 11上运行。即使你的操作系统和硬件可以使用DirectX 12,你也不能在《激战2》中选择DirectX 11,因为游戏不支持它。这完全是开发者ArenaNet的决定。
图片来源:Martin Kerstein/
帮派战争2
信不信由你,ArenaNet花了九年时间才从DirectX 9转换到DirectX 11。然而,有些游戏同时支持DirectX 11和DirectX 12,包括Fortnite(阅读
我们的Fortnite备忘单
),《战地5》、《古墓丽影》等。用户可以在游戏设置中在DirectX 11和DirectX 12之间切换。
现在,一些游戏同时支持DirectX 11和12这一事实可能会让你对游戏内的性能产生疑问。选择DX 11还是DX 12能提供更好的游戏内性能?以下视频展示了DirectX 11和DirectX 12在一系列游戏中的差异,展示了使用AMD Ryzen 3600、Nvidia GeForce RTX 3060 Ti和16GB DDR4 RAM的重要规格,如平均每秒帧数、CPU使用率、GPU使用率等。
结果在很多方面都令人惊讶,尽管DX 11和DX 12之间的发射时间相差多年,但它们之间的视觉差异有时很小。您可能还注意到了两个DirectX版本之间GPU和CPU负载的差异,每个游戏的DX 12版本通常比旧的DX 11需要更少的资源。
除了游戏内支持外,DirectX 11和DirectX 12之间的选择也将取决于您的硬件。几乎任何现代GPU都将支持DirectX 12,但对于像Radeon HD 4870这样的旧GPU来说,情况就不一样了。此GPU于2008年发布,最多只支持DirectX 10。这意味着它将无法运行大多数使用DirectX 11和DirectX 12运行的现代游戏。
DirectX 12是您的正确选择吗?
总而言之,从DirectX 11切换到DirectX 12并不像听起来那么黑白分明。这取决于各种因素,如硬件、软件、操作系统,以及游戏是否同时支持这两者。在做出决定之前,所有这些都需要考虑,未来几代DirectX也可能如此。
延伸阅读:
Windows 记事本终于获得自动更正和拼写检查功能
在首次引入 Windows 大约 41 年后,记事本终于更新了自动更正和拼写检查功能。这家科技巨头于今年 3 月推出了拼...
Ubuntu 的 apt 和 apt-get 命令有什么区别?
在Ubuntu及其他基于Debian的Linux发行版中,软件包管理是系统维护的一个重要方面。apt和apt-get是两...
Ubuntu远程桌面:如何设置和连接
远程桌面是一种允许您远程接管和使用另一台计算机的服务。在Ubuntu中,可以在图形客户端机器上启用它来控制主机。此功能对...
苹果公司在“放开”iPad活动上宣布的4款产品(以及你错过了什么)
利用当天的视频 苹果2024年5月的“放开”活动标志着iPad系列的一个重要里程碑,该公司推出了自成立以来最重大的升级。...
将照片从iPhone传输到iPhone的8种快速方法
已升级到新iPhone,是否要从旧设备中移动所有照片?或者你只是想从别人的iPhone上转移照片?以下是在两部iPhon...