在PC开发方面(不包括Xbox和Zune),
XNA和C#DirectX有什么区别?C#DirectX是否比XNA具有明显的优势(在速度,版税等方面)?
这两者与速度非托管C++ DirectX相比如何?
游戏编程方面的行业在哪里发展?
如果你真的善于编写非托管代码,那么你可能能够在DirectX之上编写更快的图形引擎.然而,对于业余爱好者来说,XNA 在2D和3D游戏开发方面都有很多表现.
这是一个很好的第9频道视频,他们在Xbox 360上运行XNA制作的赛车游戏.即使在全高清也能运行良好.XNA社区开发了一些XBox Live Arcade游戏.
据我所知,就像C#DirectX一样,Managed DirectX被称为不再正式支持,因为XNA基本上取代了它.我错了,自从我看了它以来已经很长时间了.
XNA和Managed DirectX之间的性能差异可以忽略不计,因为从本质上讲它们是相同的; XNA只有一些便利位,可以减少您需要编写的样板代码量.
Xna游戏工作室的重点是解决以游戏为中心的问题,但我会质疑任何海报都说Xna游戏工作室的性能比管理直接x更差,而没有看到一些不错的指标.
MS之外的一个独立小组创建了一个名为SlimDx的项目 - http://slimdx.mdxinfo.com/ 如果您正在编写应用程序而不是游戏(我希望您不是其他问题),那么这可能是值得的考虑.
该行业仍然大量使用C++来实现游戏内容,但是在XBox Live的社区游戏部分使用XNA Game Studio以完全托管代码编写的游戏已成功发布,并在XBox Arcade上发布.关于社区游戏的人数有多少,很快就会有一些有趣的数据.
很多全价游戏都会使用C++,但实际的游戏逻辑就像Lua一样...... Lua并不是以超快的速度而闻名!
C#具有良好的学习曲线,并被业内的工具程序员使用 - 它将成为一种有用的语言.C++将是一种很好的语言,但它需要更多的纪律来创建功能代码 - 并且让新的人有更多的绳索让自己挂起.C#可以动态地改变并执行诸如在运行时展开循环而不是编译时间 - 好的C#可以比良好的可读C++快或快 - 但你必须知道如何使用它.在非常紧凑的循环中,C++和Assembler可能在某些情况下胜出.通常在使用C++的游戏中,自定义分配器是使用自己的内存策略创建的,以尝试帮助正常分配器引起的碎片......这种事情由CLR处理.
如果您正在寻求进入游戏开发并决定使用某种语言(在这些行之间进行阅读,那么最好使用的语言就是您已经完成的语言)最终展示的项目,无论是C++,客观C,C#,Flash,Silverlight等.随着语言的变化和不受欢迎,招聘人员通常会寻求对不同语言的成熟掌握 - 这可能会减少不知道他们目前正在使用的那个 - 并且完成的工作组合将会这样做.
XNA和DirectX是解决相同问题的非常不同的实现 - 高性能图形密集编程.两者都支持2D,3D,音频和网络组件.只有在XNA是托管代码的情况下,DirectX才不受管理.
有一个DirectX的托管实现,它是DirectX调用的包装,但是在当前版本之后没有得到更新,所以我不打扰它.
XNA不是非托管DirectX的包装器.它确实使用了DirectX的一部分,但它不是一个包装器.
业界似乎仍然非常依赖于非托管DirectX - 我之所以说这是因为所有主要的引擎公司仍然使用C++,ASM和支持DirectX进行编码(单独或与OpenGL for Linux/Mac版本一起使用).微软正在"放弃"DirectX托管包装并告诉人们使用XNA这一事实表明他们正在推动托管开发人员.
目前,似乎微软不打算在Metro风格的应用程序中支持XNA.XNA的替代品和现在已弃用的"Managed DirectX"是SharpDx.这可用于创建Metro风格的应用程序,并且已经对XNA,SlimDX和Windows API代码包进行了有利的基准测试.