5

我打算用 c# 而不是 c++(使用 SlimDX)来做我的下一个项目。

所有的 directX 都使用浮点数,但是 System.Math 使用双精度数。这意味着在浮点数和双精度数之间不断转换。

所以理想情况下,我想使用浮点数编写所有代码,因为无论如何我都没有得到任何额外的精度从双精度转换为浮点数......

但是,我一直无法找到一组使用浮点数的 .net 数学函数。我当然可以用 c# 编写自己的库,但我宁愿使用已经优化的现有库等...

4

3 回答 3

2

XNA 提供了几个数学常数(包括 3D 专家,如 PI/2 等)和一些具有浮点精度的高级数学函数(尽管不是三角函数)。虽然这很可能不是您的选择,因为 XNA 不像 SlimDX 那样纤薄,这肯定意味着 System.Math 要么实际上缺少某些东西,要么性能损失没有那么大。根据我的经验,您实际上并没有为自己计算那么多,因为其中大部分是由几何类(矩阵、四元数、向量)或 GPU 本身处理的。

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

于 2008-10-13T18:46:24.213 回答
1

是的,如果这是所需的所有精度,您将通过在浮点中端到端工作来获得非常显着的性能提升。

从 CenterSpace 软件中查看NMath库。整个库始终支持浮点、双精度和复杂类型。

保罗

于 2009-10-27T05:45:24.630 回答
1

回答标题中的问题:的。

.NET Core 2.0 (.NET Standard 2.1)开始,您可以使用内置MathF类来使用浮点类型来执行数学运算。

请参阅MSDN 上有关类型的文档MathF

于 2020-03-06T06:53:21.530 回答