XNA支持OpenGL吗?

3

最终,当我完成编写游戏后,我想将其移植到XNA平台。我目前正在使用C++和OpenGL。我的问题很简单:XNA是否支持OpenGL(如果需要,我可以切换到XNA语言)?


4
你对Microsoft抱有的反感态度是荒谬的。特别是当你谈论XNA和.NET/C#时,它们被公认为是各自领域中最优秀的技术之一。除了“我讨厌Microsoft”之外,你真的需要想出更好的选择平台的标准。 - Andrew Russell
非常抱歉,我有时候表达个人观点的时候可能有点过于强烈了(这是轻描淡写吧?)。我会编辑我的原始帖子并仅保留我的个人意见。抱歉。 - Bojangles
2个回答

5
不可以直接使用XNA。XNA是建立在DirectX之上的。
如果你想要,可以使用OpenGL的包装器来创建一个单独的窗口。但是,你需要使用一个非官方的绑定才能实现这一点。然后在其中使用XNA构造。我曾经参与过这样的项目,不建议这样做。使用XNA有两种方法。第一种是按照书本上的方法进行,但对于大多数人来说太过受限制了;另一种方法则是不使用基础游戏类并处理自己的游戏逻辑。对于第二种方法来说,使用其他渲染方法需要付出太多的努力,而没有真正的回报。
我建议你将当前的游戏逻辑和图形分开。如果你决定以后转移,从C++转换到C#应该会更容易。
另外,XNA不是一种语言,而是使用C#构建的框架。

呸!糟糕透了。好吧,看来XBox不会得到我的代码,这也算是好事吧。另外,感谢提供的额外信息 - OpenGL的实现看起来很可怕!至于XNA不是一种语言,我知道它使用.NET,但在我的原始帖子中不知何故忘记提到了。非常感谢 :) - Bojangles
3
不用谢。我鼓励你去尝试一下XNA。我曾经是一个纯粹使用C++的人,但花费几周学习XNA后你会爱上它的。此外,与C ++相比,使用C#非常愉悦。虽然现在对你没有帮助,但值得尝试。 - Finglas
好的,我一定会在我的游戏有一个可用的C++/OpenGL实现时(大概需要几年时间 :-P),尝试一下这些好点子。 - Bojangles

3
XnaTouch 实现在 iPhone 上运行,因此在底层使用 OpenGL ES。它通过 Mono 项目(具体来说是 iPhone 上的 MonoTouch)使用 C#。这可能作为基础用于将 XNA 移植到不支持 DirectX 的其他平台(例如:Mac、Linux)。
(注意:根据我的经验,XnaTouch 实现并不是很好。)
显然,Xbox 360 根本不使用 OpenGL - 它使用 DirectX - 这方面您没有选择权。
而且,我甚至不明白为什么要在 Windows 上使用带有 OpenGL 的 XNA,因为现有的 XNA 实现已经可以正常工作了。

我有点担心要学习一个全新的图形库,但我想我别无选择。很遗憾XNA或XBox不支持OpenGL - 我认为这会使它更具吸引力,特别是对于小型开发者。谢谢你的建议 :) - Bojangles
@JamWaffles 幸运的是,更改图形库就像更改编程语言一样。基本概念都是相同的 - 它们都只是顶点缓冲区、索引缓冲区、着色器、渲染状态等等。 (诚然,OpenGL允许您使用诸如即时模式之类的东西,而XNA不支持。但这些东西已经过时且速度缓慢,您不应该再使用它们。) - Andrew Russell
这就是我处理OpenGL的方式,直到大约20秒前我读了你的帖子!我将使用更多的顶点缓冲区和着色器 - 它们看起来很酷,但我还没有完全理解GLSL。从我在这个线程中所读到的内容来看,似乎还需要一段时间才能转移到XNA。不过我最终会做到的! - Bojangles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接