Closed. This question is opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
已关闭6年。
Improve this question
如果您要使用C#编写下一个3D图形密集型应用程序(例如3D建模和动画软件),那么哪个是更好的选择?
如果我们认为C#与平台无关,那么OpenGL似乎很诱人,但是性能如何?
由于使用的语言是C#,因此考虑性能至关重要。
编辑:您也可以考虑SlimDX和TAO,OpenTK,csGL等。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
已关闭6年。
Improve this question
如果您要使用C#编写下一个3D图形密集型应用程序(例如3D建模和动画软件),那么哪个是更好的选择?
如果我们认为C#与平台无关,那么OpenGL似乎很诱人,但是性能如何?
由于使用的语言是C#,因此考虑性能至关重要。
编辑:您也可以考虑SlimDX和TAO,OpenTK,csGL等。
最佳答案
就图形子系统而言,托管代码的性能还不错。在每次DirectX调用中,SlimDX都要为完全 native 代码付出一点代价,但这绝不严厉。实际的损失取决于调用,对DrawPrimitive的调用比对SetRenderState的调用总的来说要昂贵得多,因此按百分比计算,最终您将在SetRenderState调用上损失更多。 SlimDX包含一个调优的数学库,该库通常运行良好,尽管您必须谨慎一些。即使使用诸如NProf之类的垃圾工具进行分析,也可以非常快速地突出显示这些内容,因此修复起来并不困难。
总体而言,如果我们考虑通过D3D进行渲染的通用,完全最佳的C++和C#代码,则C#版本可能在C++版本的10%到15%之间。但是,这很难实现。考虑一下通过使用C#可以节省多少时间,您可以将其应用于更高级的图形优化,而如果您必须使用C++来构建整个程序,则可能根本没有时间。即使您设法在C++中获得了10%的额外 yield ,但在新的一轮硬件以前所未有的速度穿透应用程序代码后的几个月内,它还是迅速缩小到了5%。我知道我会选择-这就是为什么我首先编写SlimDX的原因。
OpenTK具有类似的性能特征,但需要注意的是,他们的数学库在某些地方运行得很慢。这是我与他们讨论过的实现错误,希望不久后可以修复。
09-25 21:29