跳转到内容

关于 DXMT

DXMT 是一个图形转换层,会将 DirectX 11 图形调用转换为 Apple Metal API 调用。 由于 macOS 不直接支持 DirectX,运行 Windows 游戏时需要将图形命令转换为 macOS 可以处理的形式。 Bob-Ddong-Iri-Hoyo 以 DXMT 为中心,处理 Eternal Return 和 HoYoverse 游戏的 DirectX 11 执行路径。

使用 DXMT 主要有两个原因。

也存在像 DXVK 这样将 DirectX 调用转换为 Vulkan 的方式。 但是 macOS 并不原生提供 Vulkan 图形 API,因此可能还需要额外的转换层,将 Vulkan 调用再次转换为 Metal。 这种结构在调用开销和性能方面可能更不利。 相比之下,DXMT 的目标是更直接地将 DirectX 11 命令连接到 Metal。 这也是本项目以 DXMT 为中心构建的原因之一。

DXMT 是开源项目,因此可以根据本项目的需求修改代码。 当前在部分环境中出现的绿色闪光和特效破碎现象,可能是由传递给 Apple 图形驱动的特定数值引起的。 为了缓解这类问题,需要在数值传递给图形驱动之前,将可能造成异常的值调整到安全范围。 自定义 DXMT 可以在 DXMT 代码中筛选可能产生问题的值,并替换为更安全的值。

DXVK 也是开源项目,理论上也可以修改,但由于它采用前面提到的 Vulkan 转换结构,因此不是本项目的优先选择。 GPTK 并不开源,因此无法以相同方式修改。

DirectX 11 -> Metal

在启动器中创建 Bottle 时,也会一并选择 DXMT 版本。 所选 DXMT 会用于该 Bottle 内运行游戏的图形转换路径。 不同游戏可能需要不同的 DXMT 版本或选项,因此出现问题时,建议同时确认 Wine 版本、DXMT 版本和启动选项。 目前只提供一个 DXMT 构建,因此用户不需要额外考虑 DXMT 版本选择。

有了 DXMT 并不代表所有 DirectX 游戏都会自动运行。 能否运行会根据游戏使用的 DirectX 功能、着色器、反作弊系统和启动器结构而有所不同。

Bob-Ddong-Iri-Hoyo 优先面向 Eternal Return 和 HoYoverse 游戏。 即使 DXMT 可以在其他游戏中运行,也并不表示该游戏属于官方支持范围。