我打算用 c# 而不是 c++(使用 SlimDX)来做我的下一个项目。
所有的 directX 都使用浮点数,但是 System.Math 使用双精度数。这意味着在浮点数和双精度数之间不断转换。
所以理想情况下,我想使用浮点数编写所有代码,因为无论如何我都没有得到任何额外的精度从双精度转换为浮点数......
但是,我一直无法找到一组使用浮点数的 .net 数学函数。我当然可以用 c# 编写自己的库,但我宁愿使用已经优化的现有库等...
我打算用 c# 而不是 c++(使用 SlimDX)来做我的下一个项目。
所有的 directX 都使用浮点数,但是 System.Math 使用双精度数。这意味着在浮点数和双精度数之间不断转换。
所以理想情况下,我想使用浮点数编写所有代码,因为无论如何我都没有得到任何额外的精度从双精度转换为浮点数......
但是,我一直无法找到一组使用浮点数的 .net 数学函数。我当然可以用 c# 编写自己的库,但我宁愿使用已经优化的现有库等...
XNA 提供了几个数学常数(包括 3D 专家,如 PI/2 等)和一些具有浮点精度的高级数学函数(尽管不是三角函数)。虽然这很可能不是您的选择,因为 XNA 不像 SlimDX 那样纤薄,这肯定意味着 System.Math 要么实际上缺少某些东西,要么性能损失没有那么大。根据我的经验,您实际上并没有为自己计算那么多,因为其中大部分是由几何类(矩阵、四元数、向量)或 GPU 本身处理的。
从这个角度来看,我会看看他们提供的 SlimDX。似乎矩阵、向量、四元数(甚至 16 位浮点数)等典型事物已经存在。如果您缺少一些具有浮点精度的常量,只需自己创建它们(不必每次都进行强制转换,只需在启动时进行)。
回答标题中的问题:是的。
从.NET Core 2.0 (.NET Standard 2.1)开始,您可以使用内置MathF
类来使用浮点类型来执行数学运算。