Monogame、SharpDX 和 XNA 有什么关系?

Eri*_*ric 3 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;
    
    Run Code Online (Sandbox Code Playgroud)

我知道 Monogame 是 XNA 的重新实现,但“重新”部分在哪里?这段代码显示了使用 Microsoft 的 XNA 的 Monogame,甚至没有暗示 DirectX 12 的使用。

  1. SharpDX 具有使用 WinRT 的优势(所以我听说过),但这对我来说到底意味着什么?我知道 SharpDX 是一个位于 DirectX 之上的层,允许它在 C# 中使用,自然应该使用 WinRT。Monogame有什么理由不用WinRT?

我觉得我对某些事情感到困惑并想要清楚。请记住,我对这些东西完全是个菜鸟,任何事情都有帮助!

小智 5

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 应用程序平台的一个实现细节。