51

在PC开发方面(不包括Xbox和Zune),

XNA 和 C# DirectX 有什么区别?C# DirectX 是否比 XNA 具有显着优势(在速度、版税等方面)?

两者与速度非托管 C++ DirectX 相比如何?

游戏编程行业在哪里发展?

4

4 回答 4

54

如果您实际上擅长编写非托管代码,那么您可能能够在 DirectX 之上编写更快的图形引擎。然而,对于业余爱好者来说,XNA在 2D 和 3D 游戏开发方面都有足够的性能。

这是一个很好的 Channel 9 视频,他们在 Xbox 360 上运行 XNA 构建的赛车游戏。即使在全高清下也运行良好。XNA 社区已经开发了一些 Xbox Live Arcade 游戏。

就 C# DirectX 而言,我记得,它被称为托管 DirectX,不再受到官方支持,因为 XNA 基本上取代了它。我可能是错的,我已经很久没有看到它了。

XNA 和 Managed DirectX 之间的性能差异可以忽略不计,因为本质上它们是相同的;XNA 只是有一些方便的位来减少您需要编写的样板代码量。

于 2009-02-05T07:12:54.323 回答
31

Xna 游戏工作室的东西专注于解决以游戏为中心的问题,尽管我会质疑任何海报说 Xna 游戏工作室的东西的性能比托管直接 x 更差,而没有看到一些体面的指标。

MS 之外的一个独立小组创建了一个名为 SlimDx 的项目 - http://slimdx.mdxinfo.com/ 如果您正在编写应用程序而不是游戏(我希望您不是其他问题),那么这可能是值得的考虑。

该行业仍然大量使用 C++ 开发游戏内容,但已经成功发布了使用 XNA Game Studio 在 XBox live 的社区游戏部分以完全托管代码编写的游戏,并在 XBox Arcade 本身上发布。应该很快就会有一些有趣的统计数据来说明人们在社区游戏中赚了多少。

许多全价游戏在某些方面使用 C++,但在实际游戏逻辑中使用诸如 Lua 之类的东西……而 Lua 并不以超快的速度而闻名!

C# 具有良好的学习曲线,并且被行业中的工具程序员使用——这将是一种有用的语言。C++ 将是一门很棒的语言,但它需要更多的纪律来创建功能代码 - 并为新人提供了更多的绳索来吊死自己。C# 可以在运行时而不是编译时动态更改和执行诸如展开循环之类的事情 - 好的 C# 可以与好的可读 C++ 一样快或更快 - 但你必须知道如何使用它。在非常紧密的循环中,C++ 和汇编程序可能会在某些情况下胜出。通常在使用 C++ 的游戏中,自定义分配器是使用自己的内存策略创建的,以尝试帮助由普通分配器引起的碎片......这种事情由 .

如果您正在考虑进入游戏开发并决定使用一种语言(其中,字里行间的阅读似乎是您使用那条提问的地方),那么最好使用的语言是您完成的语言项目要在最后展示,无论是 C++、Objective C、C#、Flash、Silverlight 等。随着语言的变化和流行和失宠,招聘人员通常会寻找经过验证的对不同语言的掌握——这可能会减轻不知道的情况他们目前正在使用的那个——而一组已完成的工作就可以做到这一点。

于 2009-02-05T08:55:32.947 回答
17
  1. XNA 和 DirectX 是解决同一个问题的非常不同的实现 - 高性能图形密集型编程。两者都支持 2D、3D、音频和网络组件。DirectX 仅在 XNA 是托管代码的情况下是非托管的。
  2. 有一个 DirectX 的托管实现,它是 DirectX 调用的包装器,但在当前版本之后没有更新,所以我不会打扰它。
  3. XNA 不是非托管 DirectX 的包装器。它确实使用了 DirectX 的一部分,但它不是包装器。
  4. 业界似乎仍然非常关注非托管 DirectX - 我这么说是因为所有主要引擎公司仍在使用 C++、ASM 进行编码并支持 DirectX(单独或与 OpenGL 一起用于 Linux/Mac 版本)。微软正在“放弃” DirectX 托管包装器并告诉人们宁愿使用 XNA,这表明他们正在推动托管开发人员。
于 2009-02-05T08:29:40.097 回答
5

目前,微软似乎不打算在 Metro 风格的应用程序中支持 XNA。XNA 和现已弃用的“托管 DirectX”的替代方案是SharpDx。这可用于创建 Metro 风格的应用程序,并且已针对 XNA、SlimDX 和 windows API 代码包进行了良好的基准测试。

于 2012-03-06T16:48:19.697 回答