c# - Monogame、SharpDX 和 XNA 有什么关系?

标签 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;
    

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

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

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

最佳答案

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

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

SharpDX 是 DirectX 类型的低级包装器。仅当您想用低级管道弄脏您的手时才应该使用它,但事实并非如此。

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

关于c# - Monogame、SharpDX 和 XNA 有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37893484/

相关文章:

c# - Monogame-音乐和声音效果无法同时播放

c# - 使用 XNA/MonoGame 的不同大小和质量的正确球体碰撞解决方案

c# - 防止以编程方式缓存脚本

javascript - 使用 jquery 函数时 Textchange 事件不起作用

c# - 获取 XNA 支持的屏幕分辨率?

c# - 调整数组大小会调用 GC 吗?

ios - 在 Monogame 和 UIKit 之间切换

c#、Mysql数据比较问题

c# - 如何在 WPF 中向形状添加文本

.net - 我的用例是否需要 XNA 或者我可以使用 silverlight (Windows Phone 7)?