2008-10-13 41 views
5

我打算做我在C#而不是C的下一个项目++(使用SlimDX)。C# - 是否有32位浮点数学库?

所有的DirectX的使用花车,但System.Math使用双打。这意味着不断转换浮动和双打。

所以最好我想用花车来写所有的代码,因为我没有得到任何额外的转换精度从双打所有的时间反正到漂浮...

但香港专业教育学院一直无法找到一个使用浮动的.net的一组数学函数。当然,我可以写我自己在C#库,但我宁愿使用已优化等现有的库...

+0

有在GitHub上,要求就这对于corelcr一个问题:https://github.com/dotnet/corefx/issues/1151](https://github.com/dotnet/corefx/问题/ 1151)。 – ghord 2015-08-01 07:18:44

回答

2

XNA提供了一些数学常数(包括3D专家,像PI/2等)和一些先进数学函数具有浮点精度(但不是三角函数)。虽然这很可能不适合你,但是由于XNA并不像SlimDX那么纤细,它肯定意味着System.Math要么实际上缺少了某些东西,要么性能并没有那么大。根据我的经验,实际上你并没有为自己计算那么多,因为其中大部分都是由几何类(Matrix,Quaternion,Vector)或GPU本身处理的。

从这个角度来看,我会看看到SlimDX,他们所提供。看起来像矩阵,向量,四元数(甚至16位浮点数)等典型事物已经在那里。如果你缺少一些具有浮点精度的常量,只需要自己创建它们(不要每次都进行转换,就在启动时)。

1

是的,你会在彩车工作端至端做出非常显著的性能提升,如果这是所有需要的精度。

退房从CenterSpace软件NMath库。整个图书馆始终支持浮动,双重和复杂类型。

保罗

+0

尽管转换成本并不重要,但性能收益在很大程度上取决于他执行操作的频率。我一直在使用Sin/Cos等的System.Math版本,但每次摄像机移动时我只使用它们几次,这意味着我不会在更改图库时获得每秒一帧的帧数。但是,如果您正在将硬核浮点操作用作主要工作负载(例如CPU上的过程地形生成),那么使用这样的库进行操作是一个不错的主意。 – Guvante 2010-12-02 20:39:01

相关问题