【问题标题】:Which Graphics Framework for Windows 8? MonoGame? OpenGL and Xaml/DirectX Mixing?适用于 Windows 8 的图形框架?单人游戏? OpenGL 和 Xaml/DirectX 混合?
【发布时间】:2012-09-20 14:21:08
【问题描述】:

我想为 Windows 8 开发游戏,但由于不支持 Xna,我真的不知道使用 MonoGame 之类的东西是否好 - 因为我认为,这没有任何意义当 UI 前端使用 DirectX 运行时,将 MonoDevelop 与 OpenGL 一起使用。但是我的搜索和“apptivate.ms”,他们仍然强迫开发人员使用 MonoDevelop——但是为什么像微软这样的公司甚至会这样做呢?

而且我不喜欢使用 DirectX 用 C++ 构建我的游戏,因为在我的情况下,它不是一个大型游戏,而且我最喜欢的语言(也是我的工作语言)是 C#..

顺便说一句,用 OpenGL 或 C++ 编写这个游戏对我来说没什么大不了的,因为过去四年我在这两个方面有很多经验,但在这种情况下,我喜欢拥有像 C# 和图形框架这样的“快速”和“保存”解决方案。

所以...也许有人知道这些问题的答案:

  • 我应该将 MonoGame 与 Xaml / C# 一起使用,并且不必担心 DirectX 和 OpenGL 的混合吗?
  • 或者还有其他 DirectX/Game Framework 可以使用吗?
  • 或者,我完全错了,Xaml 不需要 DirectX?或者我可以强制 MonoGame 使用 DirectX?
  • 或者,另一点——像“System.Drawing”这样的东西对于具有一些漂亮阴影效果的太空射击游戏来说是否足够快(我认为,就我而言,我需要阴影和诸如绽放、模糊等之类的东西)?也许,微软添加了一个新的 2D 绘图库? (但我认为它仍然是 gdi+)

【问题讨论】:

  • 无法在 Metro 应用程序中使用 gdi+。 xaml 框架建立在 Direct2D、DirectWrite 和 Direct3D 之上

标签: c# xaml windows-8 microsoft-metro winrt-xaml


【解决方案1】:

如果你想使用OpenGL和c#:

http://www.opentk.com/

对于 DirectX 和 c#:

http://www.slimdx.org/

http://sharpdx.org/

【讨论】:

  • 哦...对不起,在我的搜索中没有注意到 SharpDX 和 SlimDX =/ 我想我会使用其中一个,但也许你知道 Xaml 问题的答案 - 确实它在后端使用 DirectX 运行?
  • 使用 wpf 可能会在后台使用一些 directx 功能,您可以查看链接msdn.microsoft.com/en-us/library/ms742196.aspx
【解决方案2】:

如果您指的是 Windows 8 Metro(又名 Modern)或 Windows 8 Desktop,那么您的问题是模棱两可的,但我认为它是 Metro 版本。

如果您想在不使用商业解决方案的情况下使用 C# 为 Win8 Metro 开发游戏,您可以使用:

  • SharpDX 是用于 .NET 的低级 DirectX API 或即将推出的 SharpDX.Toolkit(查看网站上的最新消息),它是围绕 Direct3D11 的高级框架(具有类似 XNA 的 API,但具有完整的 Direct3D11 支持) . SharpDX 是唯一一个涵盖整个 DirectX API 且经认证可在 Windows 8 下运行的 C# 包装器。
  • MonoGame 使用 SharpDX 作为其 Metro 后端。我没有听说您需要为此使用 MonoDevelop,因为它正在与现有的 XNA 项目一起使用,而 VS 2012 应该可以正常工作。
  • ANX 也在使用 SharpDX 作为其 Metro 后端。

关于上一个答案,如果假设 Win8 Modern,则不能使用 OpenTK,因为 OpenGL 不是 Microsoft App Store 的认证 API,而且 SlimDX 与 Windows 8 Metro 不兼容。

【讨论】:

  • 好的,很高兴知道。但我希望,OpenGL 将获得证书?因为.. 许多独立开发者使用 OpenGL 和/或 OpenTk 进行开发.. 所以他们必须编写两次“GraphicsProvider”,一次使用 DirectX,另一次使用 OpenGL(如果他们也喜欢支持 Mac/Osx 和 Linux)。
  • 我认为微软不会为 OpenGL 做任何事情。他们希望推动开发人员使用他们的 3D API。 Windows 上事实上的 3D API 是 Direct3D。如果你关心跨平台,你可以依赖像 Unity3D 这样的选项,它隐藏了维护你自己的图形抽象层的复杂性。
【解决方案3】:

GDI+ 超出 Metro/Modern UI 应用程序的范围,如果您对某些公司感兴趣,他们希望制作像这样的替代 API:http://www.moderncomponents.com/products/DrawingLibrary/,它仍处于早期阶段,但看起来不错,可能会对您有所帮助创建一些简单的游戏。

【讨论】:

    【解决方案4】:

    有一个 OpenGL 到 DirectX 的包装器允许在 Windows 8 现代应用程序中使用 OpenGL。它还没有完成,但如果您想要跨平台兼容性并且愿意只针对已实现的 OpenGL 子集(或者愿意自己实现其余部分并希望回馈),这可能就足够了。

    https://gl2dx.codeplex.com

    更新:截至 2013 年 11 月,gl2dx 似乎已死,但有一个类似的项目,ANGLE,它在 DirectX 9 之上实现了大部分(如果不是全部)OpenGL ES 2.0 规范和 EGL 规范或 11. 这是 Firefox 和 Google Chrome 在 Windows 上做 WebGL 的方法。

    http://code.google.com/p/angleproject/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-21
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多