C# 数学库(System.Numerics 与 Math.NET)

boo*_*zin 5 c# graphics numeric game-engine math.net

我正在尝试制作自己的游戏引擎以用于学习目的,但我也在尝试制作一些经过优化并能够处理各种cross-platform游戏的东西。

也就是说,我现在需要选择一个数学库来处理图形渲染的 SIMD 操作,我无法决定应该选择哪个。

经过一些研究,我发现 Math.NET 似乎非常适合这项工作,但本机System.Numerics似乎更易于使用,并且不需要第三方依赖项。

我看过一些声称System.Numerics速度很慢的帖子,但它们都已经过了截止日期(3 到 6 年前),所以我认为它们不再有可靠的结果。

所以我的问题是,特别是现在.NET Core 3.0已经发布,已经System.Numerics足够可靠,可以用于繁重的图形计算,还是我应该忘记它并去做类似的事情Math.NET

最后,会不会有我没有考虑过的更好的选择?我承认,如果有一个库可以对特定于平台的代码提供某种抽象,那就太好了(但自己编写也不成问题)

小智 0

可能是速度与精度的情况。有时,游戏中的数学计算可以摆脱某些近似值,例如经典的快速反平方根计算,而不是传统上根据公式进行计算。

它似乎也Math.NET开始作为功能更丰富的替代品System.Numerics,而后者并不是为了高速计算目的而开发的。按照最近的发展,System.Numerics可能已经赶上了Math.NET。最终,分析将帮助您找出哪一个更好。

另请注意 - Unity 拥有旧的数学库,以及新的支持 SIMD 的数学库,这两者都表明System.Numerics性能可能不那么高 - 但这只是一个观察结果。