与Monogame,SharpDX和XNA的交易是什么?

时间:2016-06-18 05:11:43

标签: c# xna monogame sharpdx

我一直在研究创建游戏的好工具,我遇到了Monogame,Sharpx和XNA。我对每个都有一些问题:

  1. 当我创建一个新的Windows项目(宣称它使用DirectX 12)时,代码模板如下所示:

    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Graphics;
    using Microsoft.Xna.Framework.Input;
    
  2. 我知道Monogame是XNA的重新实现,但是" re"部分?此代码使用Microsoft的XNA显示Monogame,并且甚至没有提示使用DirectX 12。

    1. SharpDX有使用WinRT的优势(所以我已经听过),但究竟是什么意思对我来说?我知道SharpDX是一个位于DirectX之上的层,允许它在C#中使用,自然应该使用WinRT。 Monogame有什么理由不使用WinRT?
    2. 我觉得我对某些事感到困惑,并且想要清晰。请记住,我是这个东西的总菜鸟,一切都有帮助!

2 个答案:

答案 0 :(得分:3)

MonoGame确实是XNA的重新实现。它使用Microsoft.Xna.Framework.*命名空间来保持源代码与XNA项目的兼容性。 MonoGame目前不支持DirectX 12 - 桌面版具有DirectX 11和OpenGL后端。

它为常见的游戏任务(加载内容,渲染,声音播放等)提供了简单的跨平台类,以及用于构建运行时优化内容文件的管道。 MonoGame对于大多数项目来说非常强大,并且非常适合快速开发,但不是像Unity那样功能齐全的游戏引擎。由于它是在XNA(几年前停产)之后建模的,因此大多数XNA样本/教程都可以正常工作。

SharpDX是DirectX类型的低级包装。只有当你想要用低级别的管道弄脏时,你才应该使用它,这似乎并非如此。

MonoGame的DirectX实现(用于经典Windows,UWP和Windows 8应用程序)内部使用SharpDX与DirectX进行通信。说到WinRT,它只是“现代”Windows应用程序平台的实现细节。

答案 1 :(得分:1)

维基百科有几页关于XNA的历史。简而言之,它不再受支持。 MonoGame扩展了它。 SlimDX和SharpDX使用自己的DirectX包装器,基本上是彼此的副本。最近的帖子SlimDX future 它不会继续下去。我不知道MonoGame,但在SharpDX中很强大,它提供了对DirectX 12的当前支持。如果你也想使用OpenGL,你可以尝试ANX,但我不知道。 SharpDX的家伙还在GitHub上写了一个Collada类,并且有一个兼容的Assimp类。以上都没有集成的物理系统,但PhysX for .Net可以与SharpDX一起使用。

总之,如果您只需要Direct X for C#,那么SharpDX将是最直接的选择。如果您认为可以扩展到其他平台,您可能需要查看MonoGame或ANX,但我也无法保证。上面提到的都不是完整的游戏引擎(例如Unity或UE4),它们只允许使用Visual Studio C#本身不支持的DirectX等功能。