为Linux创建DirectX供应商驱动程序的方式和难度



正如在这个线程中看到的,似乎能够在Linux上本机运行DirectX的缺失部分是供应商驱动程序。

到底是什么供应商驱动程序?它们是驱动程序接口的一个特定的模型的组件,或一个系列,甚至他们中的任何一个?它们是用什么编码的?ASM和C最有可能?

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

制作这些驱动程序有多难?要花多长时间?它需要什么特殊知识吗?

我知道这引起了很多问题,但我很好奇,为什么没有大的团队认真地研究过这个问题(尽管一定有一个很好的理由)。

提前感谢你的回答!

编辑:这绝不是要引起争论,比如,OpenGL vs DirectX,或者Windows vs Linux。通过阅读FAQ,我真的不明白为什么这个帖子不是建设性的,因为它问的问题很有针对性,应该很快得到回答。

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

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

不同于将它的使用限制在一个操作系统上的哲学,可能试图将其用户束缚在唯一的平台上,openGL从一开始就打算作为一个平台独立的API。

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

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

总的来说,支持openGL而不是DirectX的主要原因如下:

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

  • openGL可以在任何平台上使用,DirectX只能在单个平台上使用

  • DirectX支持的任何操作都支持openGL

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

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

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

我希望我给了你一些好的理由,为什么没有人尝试过(或将尝试)你所要求的

相关内容

最新更新