我正在用 C# 为我的 DirectX 3D 引擎开发一个数学库。我正在使用 SlimDX,这是一个很棒的组合且功能强大的库。SlimDX 提供了相当多的数学类,但它们实际上是原生 D3DX 对象的包装器,因此虽然对象本身非常非常快,但我认为互操作不是,因为我的托管 C# 代码优于它们。
我的具体问题与浮点比较有关。一种规范的方法是定义一个 epsilon 值,并将该值与浮点值之间的差异进行比较以确定接近度,如下所示:
float Epsilon = 1.0e-6f;
bool FloatEq(float a, float b)
{
return Math.Abs(a - b) < Epsilon
}
函数调用开销会淹没实际比较,所以这个微不足道的函数将在 C++ 中内联,C# 编译器会这样做吗?有没有办法告诉 C# 编译器我想要一个内联方法?