不可以直接使用XNA。XNA是建立在DirectX之上的。如果你想要,可以使用OpenGL的包装器来创建一个单独的窗口。但是,你需要使用一个非官方的绑定才能实现这一点。然后在其中使用XNA构造。我曾经参与过这样的项目,不建议这样做。使用XNA有两种方法。第一种是按照书本上的方法进行,但对于大多数人来说太过受限制了;另一种方法则是不使用基础游戏类并处理自己的游戏逻辑。对于第二种方法来说,使用其他渲染方法需要付出太多的努力,而没有真正的回报。我建议你将当前的游戏逻辑和图形分开。如果你决定以后转移,从C++转换到C#应该会更容易。另外,XNA不是一种语言,而是使用C#构建的框架。
XnaTouch 实现在 iPhone 上运行,因此在底层使用 OpenGL ES。它通过 Mono 项目(具体来说是 iPhone 上的 MonoTouch)使用 C#。这可能作为基础用于将 XNA 移植到不支持 DirectX 的其他平台(例如:Mac、Linux)。(注意:根据我的经验,XnaTouch 实现并不是很好。)显然,Xbox 360 根本不使用 OpenGL - 它使用 DirectX - 这方面您没有选择权。而且,我甚至不明白为什么要在 Windows 上使用带有 OpenGL 的 XNA,因为现有的 XNA 实现已经可以正常工作了。