linux - 为 Linux 创建 DirectX 供应商驱动程序的难度如何?

标签 linux directx drivers

this thread 上所示,看来能够在 Linux 上原生运行 DirectX 所缺少的部分是供应商驱动程序。

供应商驱动程序到底是什么?它们是与特定型号的组件、系列甚至其中任何一个组件连接的驱动程序吗?它们的编码是什么? ASM 和 C 最有可能吗?

某人(或团队)如何为 Linux 创建这些驱动程序?如何将其集成到 Linux 中?通常为 Windows 制作并使用 DirectX 的游戏或应用程序是否需要针对 Linux 进行任何调整?制作游戏的公司是否会为 Linux 构建游戏,因为他们知道这些游戏不需要或只需要进行一些调整就可以使用?

制作这些驱动程序有多难?需要多长时间?需要任何特定知识吗?

我知道这会引起很多问题,但我对此很好奇,以及为什么没有大团体认真研究过这个问题(尽管一定有充分的理由)。

提前非常感谢您的回答!

编辑:这绝不是煽动诸如 OpenGL 与 DirectX 或 Windows 与 Linux 之类的争论。通过阅读常见问题解答,我真的不明白为什么这个帖子没有建设性,因为它要求提出非常有针对性的问题,这些问题应该很快就能得到回答。

最佳答案

恕我直言,没有人真正费心处理 directX 的主要原因是基于这样一个事实:已经有一个可用的图形库(Linux 的特殊情况下是 mesa),它完全支持 DirectX 也可用的任何所需的图形操作。

与 DirectX 相比,DirectX 是一个基于单一公司拥有的所谓知识产权的规范,该库使用的名为 openGL 的 API 是一个由硬件制造商联盟商定的开放标准。

与将其使用限制在一个操作系统(可能试图将其用户束缚在唯一平台上)的理念不同,openGL 从一开始就旨在作为独立于平台的 API。

遵循这一原则,与 DirectX 仅在一个单一平台上可用相比,openGL 可在任何计算平台上使用,从基于 Android 的系统、Mac 和许多其他 UNIXoid 系统(包括 Linux)甚至到 Windows 计算机。

使用除 openGL 之外的任何其他 API 都会破坏这种平台独立性,这可能不会被视为进步,而是会被视为倒退。

总而言之,与 DirectX 相比,更青睐 openGL 的主要原因可能如下:

  • openGL 是开放标准,而 DirectX 是专有标准

  • openGL 可在任何平台上使用 DirectX 仅可在单一平台上使用

  • OpenGL 也支持 DirectX 支持的任何操作

  • 如果确实需要,可以通过包装库提供 DirectX 调用,将操作推送到 openGL,例如在 WINE 中完成

仅 DirectX 库实现的可用性根本无法使任何专为 Windows 平台设计的二进制代码运行,因为整套系统库和基础设施仍然根本不可用。事实上,就连 Windows ELF 和 Linux 上使用 PE/COFF 的二进制格式也是不同的。

提供包括所需系统库在内的整个兼容层的努力已经在进行中。正如上面已经提到的,它的名称是 WINE。 (参见:http://www.winehq.org/)

我希望我给了你一些好的理由,解释为什么没有人按照你的要求尝试(或将尝试)。

关于linux - 为 Linux 创建 DirectX 供应商驱动程序的难度如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15602708/

相关文章:

windows - 在 Windows 上,OpenGL 与 DirectX 有何不同?

directx - 如何填充使用 D3DXCreateText 创建的 3D 网格?

ubuntu - virtualbox-guest-dkms 和 virtualbox-guest-dkms-hwe 有什么区别?

linux - 使用perl脚本在linux中杀死多个进程

linux - Webpack 构建因 Gitlab-CI 失败

c++ - 使用宏进行赋值和错误检查

driver - 设备驱动程序与驱动程序堆栈

linux-kernel - 设备驱动程序中的主要和次要编号

linux - 如何更改同步目标

linux - 如果删除 mongodb 数据库文件会怎样?