为什么Linux没有DirectX API?
在考虑现代视频卡的windows系统上DirectX API的驱动程序端实现时,我想知道为什么在非windows系统(尤其是linux)上不提供此实现 由于明显缺少此功能,我只能假设有一个我不知道的好理由,但在我的原始理解中,我只是将DirectX调用视为硬件设备上的函数入口点。作为记录,我指的不是兼容层(最著名的是WINE,我每天都对这个项目感到惊讶),而是一个直接调用硬件的库为什么Linux没有DirectX API?,linux,directx,drivers,Linux,Directx,Drivers,在考虑现代视频卡的windows系统上DirectX API的驱动程序端实现时,我想知道为什么在非windows系统(尤其是linux)上不提供此实现 由于明显缺少此功能,我只能假设有一个我不知道的好理由,但在我的原始理解中,我只是将DirectX调用视为硬件设备上的函数入口点。作为记录,我指的不是兼容层(最著名的是WINE,我每天都对这个项目感到惊讶),而是一个直接调用硬件的库 可以创建directx的开源版本吗?这可能吗,但非常困难?为什么不直接使用OpenGL呢?它支持DirectX的所有
可以创建directx的开源版本吗?这可能吗,但非常困难?为什么不直接使用OpenGL呢?它支持DirectX的所有功能。您是否有使用DirectX的特定原因?作为一个原因,我猜他们认为没有必要允许它在Linux上运行 你可以跑。您可以使用在Linux上编程XNA。但所有这些都使用OpenGL提供硬件加速渲染。好吧,在可预见的未来,OpenGL已经(并且可能会)成为Linux上的唯一选项 是否可以编写自己的DirectX实现?当然,但这涉及到编写驱动程序、专有知识,而且可能会花费太多的成本,任何人都无法从中真正获益
编辑:现在,这是在Linux上运行DirectX应用程序的一种非常真实和高效的方式。好的,DirectX包含3个部分
- 供应商驱动程序(提供DX定义的低级API)
- DirectX库(使用DX定义的低级API访问硬件,提供DirectX API)
- 软件(使用DirectX API,例如游戏)
linux上没有驱动程序提供DX定义的低级API,因此即使可以提供DirectX库,但如果没有合适的供应商驱动程序,它也无法工作,我看不出是否有任何供应商会为他们的硬件平台创建一个端口。为DirectX创建端口的工作会产生与WINE相同的问题。它将永远不会像在Windows上一样。根据这一原理,您必须研究OpenGL和相关的多平台库 此时此刻,如果您想用已有的DirectX代码完成某些事情,葡萄酒将是最接近您的媒介。再说一次,我不确定Visual Studio或普通打字会以何种方式让您更接近一个流畅的环境。葡萄酒库离本土并不远,但总会有模仿,这在我诚实的观点中是可以接受的 如果我看看Final Fantasy XIV在iMac(2011)上的完整设置下运行得多么出色,我认为依赖WINE的实现并没有那么糟糕。游戏的渲染方式与我的iMac上的Bootcamp(Windows)完全相同 如果你真的想在这方面有所作为,你可以试着在WINE开发者的论坛或邮件列表上询问他们,你如何可能只使用DirectX兼容性的实现,并在你的项目中使用。您可以在其中调用库,而不是通过Windows模拟系统调用请求DirectX
编辑:我也完全同意user956030的答案。DirectX是一套API:
- Direct3D(绘制3D图形)
- DirectX图形基础架构(枚举适配器和监视器并管理交换链)
- Direct2D(绘制二维图形)
- DirectWrite(字体)
- DirectCompute(GPU计算)
- DirectSound3D(播放3D声音)
- DirectX Media(DirectAnimation用于2D/3D web动画,DirectShow用于多媒体播放和流媒体,DirectX Transform用于web交互,Direct3D保留模式用于更高级别的3D图形)
- DirectX诊断(用于诊断与DirectX相关的组件并生成报告的工具,如音频、视频和输入驱动程序)
- DirectX媒体对象(支持流式对象,如编码器、解码器和效果)
- DirectSetup(安装DirectX组件并检测当前DirectX版本)
- DirectDraw
- DirectInput
- DirectPlay
- DirectSound
- DirectMusic
然而,如果你的问题更多的是“我可以得到/写一些东西来运行用DirectX制作的游戏和程序在Linux上运行吗?”这意味着,简言之,不可能是因为更可能的版权侵权。DirectX是专为Microsoft targets设计的适当产品,因此发生这种情况是非常不寻常的 我想到了另外两种软件,SDL和OpenGL
OpenGL提供了DirectX的硬件替代方案,SDL与OpenGL合作,提供您期望从DirectX获得的软件支持。您的问题在2019年是错误的。是使用Vulkan和Wine的Linux D3D11和D3D10实现的一个实现 此外,mesa还有本机Direct3D 9实现,但以我所知