在PC开发方面(不包括Xbox和Zune),
XNA和C#DirectX有什么区别? C#DirectX是否具有优于XNA的显着优势(在速度,版税等方面)?
两者如何与速度非托管C ++ DirectX进行比较?
行业在游戏编程方面走向何方?
答案 0 :(得分:52)
如果您真的善于编写非托管代码,那么您可能能够在DirectX之上编写更快的图形引擎。然而,对于业余爱好者来说,XNA在2D和3D游戏开发方面都有很多的性能。
Here is a good Channel 9 video他们在Xbox 360上运行XNA构建的赛车游戏。即使在全高清时也能正常运行。 XNA社区开发了一些XBox Live Arcade游戏。
据我所知,就像C#DirectX一样,Managed DirectX被称为不再正式支持,因为XNA基本上取代了它。我错了,自从我看了它以来已经很长时间了。
XNA和Managed DirectX之间的性能差异可以忽略不计,因为实质上它们是相同的; XNA只有一些便利位,可以减少你需要编写的样板代码量。
答案 1 :(得分:31)
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 ++的游戏中,自定义分配器是使用自己的内存策略创建的,以尝试帮助正常分配器引起的碎片......这种类型的东西由.Net / C#中的CLR处理,只要你编程到垃圾收集器的优势(与您自己的C ++实现相同)然后您不必关心.Net中的这种低级实现细节。
如果您正在寻求进入游戏开发并决定使用某种语言(在这些行之间进行阅读,那么最好使用的语言就是您所使用的语言)有一个完成的项目,在它的最后展示,无论是C ++,客观C,C#,Flash,Silverlight等。随着语言的变化和进出不受欢迎,招聘人员往往寻求对不同语言的成熟掌握 - 这可能减少不知道他们正在使用的那个 - 并且完成的工作组合将会这样做。
答案 2 :(得分:17)
答案 3 :(得分:5)
目前,微软似乎不打算在Metro风格的应用程序中支持XNA。 XNA的替代品和现在已弃用的“Managed DirectX”是SharpDx。这可用于创建Metro风格的应用程序,并且对XNA,SlimDX和Windows API代码包一直有利benchmarked。