为什么没有适用于Linux的DirectX API?

Bri*_*ian 17 linux directx drivers

考虑到Windows系统上用于现代视频卡的DirectX API的驱动程序端实现,我想知道为什么这种实现在非Windows系统上是不可用的,最明显的是linux.

由于显然没有这个功能,我只能假设有一个很好的理由让我无视,但在我的原始理解中,我只是看到DirectX调用只不过是硬件设备上的函数入口点.而对于记录,我并不是指兼容层(最值得注意的是WINE,我每天都惊讶的项目),而是一个直接硬件调用的库.

是否可以创建directx的开源版本?它有可能但是非常困难吗?

Zan*_*Jie 15

AFAIK,DirectX包含3个部分

  • 供应商驱动程序(提供DX定义的低级API)
  • DirectX库(使用DX定义的低级API访问硬件,提供DirectX API)
  • 软件(使用DirectX API,例如游戏)

没有驱动程序提供DX在Linux上定义的低级API,所以即使有可能提供DirectX库,但如果没有合适的供应商驱动程序它将无法工作,我无法看到是否有任何供应商正在进行为他们的硬件平台创建一个.


Ani*_*Ani 7

为什么不使用OpenGL?它支持DirectX的所有功能.您是否有特定理由使用DirectX?至于一个原因,微软制造了DirectX,我猜他们认为不需要允许它在Linux上运行.

您可以使用Wine在Linux中运行DirectX游戏.您可以使用MonoGame在Linux上编写 XNA .但所有这些都使用OpenGL来提供硬件加速渲染.AFAIK,在可预见的未来,OpenGL已经(并且可能将成为)Linux上的唯一选择.

是否可以编写自己的DirectX实现?当然 - 但它涉及到编写驱动程序,专有知识以及可能为任何人真正从中获益的成本太高.

  • 问题来自可用性的观点,而不是开发的观点.如果游戏行业正在使用DirectX,那么我想知道游戏行业将现有游戏移植到Linux有哪些障碍.使用完全相同的硬件,我可以在一个操作系统中本机运行游戏,但不能在另一个操作系统中运行,所以在我天真的时候,我想想它就像编写API层然后将所有内容传递给驱动程序一样简单.显然这不存在所以我的理解是错误的,我只是想澄清一下. (8认同)