是否值得将一个小的C#“引擎”移植到C ++或类似的?

时间:2008-11-14 03:31:29

标签: c# c++ directx

所以,按照我在MSDN上找到的教程,我已经使用DirectX和C#创建了你可能称之为“引擎”的东西。我没有看到很多这样的事情(就个人而言,那是)在C#中完成并且大多数人似乎更喜欢C / C ++所以我很好奇是否使用C#会回来咬我,或者我是否应该继续吗?

我问的原因是教程突然停止了,所以有一些东西的基础,但它足够小,可以毫不费力地移植。我喜欢C#,但我不知道是否有其他人知道我不知道。

5 个答案:

答案 0 :(得分:3)

彼得好,主要原因是C ++与平台无关,而C#并不是真正意义上的,尽管Mono(我不认为你可以在大多数手机,Nintendo DS或Playstation3上运行Mono C#,例子)。

无论如何,大多数这些引擎都支持DirectX和OpenGL,和/或软件渲染器,因此它们是从头开始设计的,是不可知的。但与任何不可知系统一样,这需要大量的精力和资源。

现在你说的是,你的引擎是C#+ DirectX,这意味着你的引擎现在可以运行在PC,Xbox,Zune和一些Window的手机上。说实话,这并不是一个糟糕的平台。因此,如果您对这种自由度感到满意,并且您更喜欢C#而不是C ++而不是坚持使用您所拥有的,并花时间改进您的引擎。但是,如果你想在不是Microsoft的任何东西上运行你的引擎,你需要在某个时候跳转到C / C ++。

为了了解我所说的我的团队的引擎支持Xbox,PS3,Wii,PSP,PC,以及可能的其他平台,如果我们付出努力,但是我们有15名全职工程师在工作它,所以...你看,这是一个很大的代价。现在,如果你想要一个免费项目这样的东西,你知道C ++,你可以尝试任何一个开源引擎,如Ogre或Irrlicht。

答案 1 :(得分:1)

我建议坚持你所熟悉的。如果您打算执行某些较低级别的功能,例如实现您自己的图像处理或创建自定义过滤器或变换(取决于您使用的是directx),则只应考虑使用C或C ++。

图形应用程序可能具有计算密集型方面。其中大部分已在DirectX api中得到解决,如果您从C ++或C#中使用它,速度同样快。

在哪里考虑低级语言:如果要创建一些可以更快地执行的图像处理 - 这仅适用于directx api不提供的情况,例如创建一些自定义编码器/解码器。在这种情况下,您可以使用其他语言创建自定义组件,然后分别将其加载到C#应用程序中。如果您正在使用C ++内部函数,它允许您为CPU编程,还可以查看GPGPU API,如CUDA。

答案 2 :(得分:1)

作为一个业余爱好者游戏开发者,我更喜欢C#(第三方库调用SlimDX)而不是C ++。是的,用经过充分优化的C ++编写的游戏可能比用经过优化的C#编写的游戏运行得更好。但是我通过使用C#节省的时间(我估计非常大约30-40%)可以用来优化我的算法,这样C#游戏实际上运行的速度比我用C ++在相同的时间内编写的速度要快。

如上所述,还存在跨平台兼容性问题,因为对于大多数实际用途,C#游戏只能在Microsoft平台上运行。

要考虑的另一个问题是,如果您使用C#编写应用程序,则需要在运行的计算机上安装.Net Framework。这可以使您的应用程序干净利落地分散一些麻烦,尽管这绝不是一个不可逾越的障碍。

答案 3 :(得分:0)

有一些工作室使用c#进行游戏。

你也可以看看XNA,还有一个quake3引擎的端口在互联网上飞行,移植到c#。

所以应该没问题。

答案 4 :(得分:0)

如果您对C#感觉更舒服并且没有性能问题迫使切换到更靠近CPU的语言,那么我认为没有必要改变。

但是,根据您打算将来做什么以及该引擎应该采取多大程度,这可能会发生巨大变化,C#可能会成为错误的选择。但不幸的是,这个唯一的时间可以说明。正确的教育猜测需要更多关于当前实施和未来计划的细节。