几十年来,Direct3D 一直是 Windows 游戏的一部分,将分散的 PC 硬件景观统一在一个支持 3D 的保护伞下。然而,主要为 Linux 创建的应用程序 DXVK 有时是更好的选择,即使您使用的是 Windows。
您想要更好的兼容性,更重要的是,您的应用程序和游戏的性能吗?那么您需要尝试一下 DXVK。
Windows 上 DirectX 的问题
Microsoft 创建 DirectX 作为“统一解决方案”,帮助程序员使用任何 PC 的硬件功能。软件开发人员可以“瞄准”DirectX 的 DirectDraw(2D 图形)、Direct3D(硬件加速 3D)和 DirectSound(音频)库,而不是为每个硬件部分编写不同的代码。然后,让微软的解决方案将他们的代码“翻译”为每个硬件部分的“母语”。
DirectX 成为 Windows 中不可替代的核心技术,并从此不断发展。然而,Direct3D 有一个小问题:它不是 100% 向后兼容。
Microsoft 和支持 Direct3D API 的 GPU 的创建者(如“Nvidia、AMD 和 Intel”)偶尔会放弃对 Direct3D 过去版本中引入的功能的支持,但这些功能从未获得关注。因此,一些较旧的游戏可能无法在具有最新版本 Direct3D 的现代 GPU 上正确运行。
什么是 Vulkan?
OpenGL 被认为是对 Microsoft 闭源 Direct3D 的更“开放”的回应,它是 Silicon Graphics 图形工作站中使用的 3D 图形库的变异版本。
然而,与微软的 Direct3D 相比,OpenGL 在功能方面始终落后。最终,重新启动这项工作似乎更为理性。这就是创建 Vulkan(也称为“OpenGL Next”)的原因,它提供了更好的性能并增强了对硬件的控制。
与 OpenGL 一样,与 Microsoft 的 Windows 绑定的 Direct3D 不同,Vulkan 是“开放的”和跨平台的。您可以在 Windows、Linux 甚至智能手机上使用 Vulkan。虽然 Mac 本身不支持,但可以通过 MoltenVK 在 Mac 上使用。
那是简短的版本。要了解有关 Vulkan 的更多信息,请查看我们有关Windows 中的 Vulkan 运行时库的文章。
什么是 DXVK?
DXVK 是一个包装器,将 Direct3D“翻译”为 Vulkan。在人类世界中,翻译可以成为英语和日语使用者之间的调解人,使他们能够相互理解。类似地,“包装器”或“转换层”可以“获取”为特定硬件、平台或 API 编写的代码,并将其转换为在另一个硬件、平台或 API 上运行。
DXVK 最初是在 Valve 的支持下针对 Linux 开发的,Valve 也在 SteamOS 和 Steam Deck 上使用了它。您可以在我们的文章中了解更多相关信息,其中我们了解了Steam Proton 以及它如何在 Steam Deck 上运行 Windows 游戏。
为什么要在 Windows 上使用 DXVK?
如果游戏已经在您的硬件上运行良好,则没有理由使用 DXVK。但一些为旧版本 DirectX 编写的游戏在新版本 DirectX 和现代硬件上无法“正确”(如果有的话)运行。
通过将旧且有缺陷的 Direct3D 代码“翻译”为更现代的 Vulkan API,对性能的影响最小(如果有的话)。与此同时,图形损坏或功能缺失的有问题的游戏可能会再次完全可以玩。
由于 Vulkan 与 Direct3D 12 相当,并且两者都比旧版本的 Direct3D 更好(更快)(正如我们在比较DirectX 11 与 DirectX 12时看到的那样),因此将旧的 Direct3D 游戏“翻译”为 Vulkan 有时可以提高游戏的性能表现。
英特尔在 Arc GPU 上的工作证明了这一点。英特尔可以尝试在 Arc GPU 驱动程序中添加对每个旧游戏的支持。相反,英特尔决定进一步改进 DXVK。英特尔“实验”的初步结果使旧游戏的性能提高了 2 倍,其中数十款游戏可以“通过”DXVK 进行播放。
如何在 Windows 上使用 DXVK
在 Windows 上使用 DXVK 非常简单,因为无需调整或配置。您只需下载它,将其解压到游戏的正确文件夹中,就可以开始使用了。
但是,您必须使用与您的游戏所使用的 Direct3D 版本相匹配的正确 DXVK 版本。
如果我们一起完成整个过程,了解如何下载最新版本的 DXVK、识别游戏的“技术”以及在正确的文件夹中安装正确的 DLL,可能会更容易。
如何下载 DXVK
DXVK 是开源软件,可以免费使用。您可以在 GitHub 上找到其最新版本。
- 访问 DXVK 的官方 GitHub 页面,然后单击页面右侧Releases下的最新版本链接。
- 在发布页面上向下滚动并找到最新版本的资产部分。单击最新的 DXVK tar.gz 存档进行下载。在撰写本文时,版本为 2.2。
- 将下载的存档存储在某处,因为您需要将其内容解压到您想要使用 DXVK 而不是 Direct3D 运行的每个游戏的文件夹中。
如何选择正确的 DXVK 版本
如果您需要知道您的游戏使用的是哪个版本的 Direct3D,PC Gaming Wiki 网站可以提供帮助。
- 使用浏览器访问PC Gaming Wiki,然后使用右上角的搜索字段查找您要添加 DXVK 的游戏。
- 当您找到您的游戏时,请访问其页面并向下滚动以到达“其他信息”部分。将您的注意力转向 API 表。在“技术规格”和“支持”列中,您将看到您的游戏正在使用的 Direct3D 版本。下面的Executable、32-bit和64-bit列将“告诉”您应该选择哪种架构。
如何将 DXVK 添加到您的游戏中
现在您知道您的游戏使用哪个 Direct3D 版本和 CPU 架构,您可以将正确版本的 DXVK 添加到其文件夹中。
- 使用您最喜欢的存档管理器打开 DXVK 存档(在本文中,我们使用 WinRAR),然后输入您将在其中看到的单个 DXVK 文件夹。
- 在里面,您会发现两个子文件夹,每个子文件夹对应一种计算机体系结构。输入适合您的游戏的正确选项。即使您的操作系统是 64 位(就像当今大多数版本的 Windows 一样),如果您的游戏是 32 位,您也应该选择 32 位文件夹。
- 选择DXGI.DLL以及适合您的游戏所使用的Direct3D版本的正确 DLL 。正如您将看到的,还有三个 DLL,分别对应 Direct3D 的早期版本:9、10 和 11。
- 找到安装游戏的本地文件夹,然后找到包含可执行文件的子文件夹(“游戏运行的文件”)。将上一步中的 DLL 提取到此文件夹。
如何测试和基准测试您的增强型游戏
如果您现在运行游戏,它应该使用 Vulkan 而不是 Direct3D,并且有望表现更好。
即使您没有看到帧速率有任何显着变化,有时也可以通过其他方式“感受到”这些改进。例如,我们在配备 Ryzen 5900x、64GB RAM 和 Nvidia RTX 3070 GPU 的 PC 上尝试使用经典《蝙蝠侠:阿卡姆之城》进行 DXVK。我们的硬件已经超过了这款老游戏的最高规格,实现了非常高的帧速率。即使他们使用 Vulkan 获得了更高的成绩,但差异也不容易被察觉。
然而,游戏的动作感觉更流畅。使用 DXVK,屏幕之间的转换、加载级别以及按 Alt + Tab 几乎是即时的。
何时不应使用 DXVK
DXVK 有很多好处,可以将旧游戏的性能带入现代。尽管如此,它并不是提高性能的灵丹妙药,有时甚至不值得使用它。
1. DXVK 不会提高游戏性能
如果您已将 DXVK DLL 添加到游戏中,但之后没有发现任何差异,如果您愿意,可以再次删除它们。为此,您可以删除已添加到游戏文件夹中的 DLL。
2. DXVK 导致性能更差或引入新的故障
有时将 DXVK 添加到游戏中可能会产生相反的效果。不幸的是,最终用户无法解决此类问题。
添加 DXVK 后是否出现游戏性能下降或视觉问题?退出游戏并从其目录中删除 DXVK 的 DLL。
3.您想在线玩游戏
DXVK 是一个兼容层,仅影响游戏的图形输出。尽管如此,一些公司仍然反对对其游戏进行任何修改,以确保每个人都有一个公平的环境。
DXVK 可能不是“作弊”,但它仍然是“游戏修改”,并且可能会被标记为“作弊”。
4.游戏已经内置了Vulkan支持
如果游戏已经使用 Vulkan API(例如《毁灭战士:永恒》),则没有理由将其输出设置为 Direct3D,然后将其转换为 Vulkan。
5.游戏使用Direct3D 12
由于 Direct3D 12 几乎完全与 Vulkan 相当,因此将一种超现代图形 API 转换为另一种超现代图形 API 没有任何好处。
在 Windows 上通过“翻译”3D 增强您的旧游戏
最初是作为在 Linux 上玩更多 Windows 游戏的一种方式,最终成为一种有用的兼容性解决方案和性能增强器。因此,请将 DXVK DLL 的最新存档放在手边。将它们添加到您想要消除故障、提高性能、获得更流畅的游戏动作并提高响应能力的任何游戏中。
即使它最终没有帮助,尝试一下也只需要几秒钟,而且通常情况下,你可能会对结果感到惊讶。