考虑到现代video卡的Windows系统上的DirectX API的驱动程序端实现,我想知道为什么这个实现在非Windows系统,特别是Linux上不可用。
由于这个function显然不存在,我只能假定我有一个很好的理由,但是在我原始的理解中,我只是将DirectX调用看作硬件设备上的函数入口点。 而对于logging来说,我并不是指兼容性层(最值得注意的是WINE,一个我每天都为之惊叹的项目),而是一个直接硬件调用的库。
是否有可能创build一个开放源代码版本的DirectX? 这是可能的,但是很难实现吗?
AFAIK,DirectX包含3个部分
在linux上没有提供由DX定义的低级API的驱动程序,所以即使可以提供DirectX库也是如此,但是如果没有适当的供应商驱动程序,它也不能工作,而且我也看不到有什么供应商会去为他们的硬件平台创建一个。
为什么不使用OpenGL? 它支持DirectX所具有的所有功能。 你有使用DirectX的具体原因吗? 出于某种原因, 微软制造了DirectX ,我想他们没有看到任何需要让它在Linux上运行。
您可以使用Wine在Linux中运行DirectX游戏 。 您可以使用MonoGame在Linux上编写 XNA。 但是所有这些都使用OpenGL来提供硬件加速渲染。 AFAIK,在可预见的未来,OpenGL已经(也可能是)Linux上唯一的选择。
是否有可能编写自己的DirectX实现? 当然 – 但它涉及到写驱动程序,专有知识和可能太多的成本让任何人真正从中受益。
为DirectX创建端口的工作会产生与您在WINE中遇到的相同的问题。 它永远不会像在Windows上一样。 从这个原则衍生出来,你将不得不考虑OpenGL和相关的多平台库。
在这个时候,如果你想用你已经拥有的DirectX代码完成一些事情,WINE将会是你最接近的媒介。 然后再次,我不确定Visual Studio或简单的打字会使你更接近流畅的环境。 WINE图书馆距离本土并不遥远,但总是存在一些仿效,在我诚恳的意见中,某个特定点是可以接受的。
如果我看看“最终幻想XIV”在我的iMac(2011)上的完整设置有多么出色,我认为依靠WINE的实现并不是那么糟糕。 游戏完全呈现在我的iMac的Bootcamp(Windows)上。
如果你真的想在这个方面工作,你可以尝试在论坛或邮件列表中询问WINE Devs如何使用DirectX兼容性的实现,并在你的项目中使用它。 你也许可以调用库,而不是通过Windows仿真的系统调用请求DirectX。
编辑:我完全同意user956030的答案。
DirectX是一套API的:
DirectX组件已弃用,但仍支持
正如你所看到的,API的许多部分都需要用针对Linux编写的驱动程序的功能重写。 DirectX套装的某些部分可能会调用Windows操作系统,并且代码将不得不为Linux机器重写,而不会侵犯DirectX或Windows操作系统的复制部分。
是的,你可以编写一个开源的API套装,它与DirectX for Linux有同样的功能,但是如果没有Linux制造商的声音和图形驱动程序/支持,那么这将是一个非常艰巨的任务。
但是,如果你的问题更多的是“我可以得到/写一些能够运行DirectX的游戏和程序在Linux上运行吗? 在这个意义上,总之没有因版权侵权而更有可能。
DirectX是专为Microsoft目标设计的专有产品,因此,这种情况将非常罕见
还有另外两个软件,SDL和OpenGL
OpenGL提供了DirectX的硬件替代品,而SDL与OpenGL一起提供了您期望从DirectX获得的软件支持