5

次のプロジェクトは、c++ ではなく c# (SlimDX を使用) で行う予定です。

DirectX はすべて float を使用しますが、System.Math は double を使用します。これは、float と double の間で常に変換を行うことを意味します。

したがって、理想的には、浮動小数点数を使用してすべてのコードを記述したいと思います。とにかく、常に倍精度浮動小数点数から浮動小数点数に変換する追加の精度が得られないためです...

ただし、フロートを使用する .net 用の一連の数学関数を見つけることができませんでした。もちろん、C# で独自のライブラリを作成することもできますが、むしろ最適化された既存のライブラリを使用するなど...

4

3 に答える 3

2

XNAは、いくつかの数学定数(PI / 2などの3Dスペシャリストを含む)と、浮動小数点精度のいくつかの高度な数学関数(三角関数ではありません)を提供します。XNAはSlimDXほどスリムではないため、これはおそらく選択肢ではありませんが、System.Mathに実際に何かが欠けているか、パフォーマンスへの影響がそれほど大きくないことを意味します。私の経験では、実際にはそれほど多くを計算することはありません。そのほとんどは、ジオメトリクラス(Matrix、Quaternion、Vector)またはGPU自体のいずれかによって処理されるためです。

その観点から、私は彼らが提供しているSlimDXを調べたいと思います。行列、ベクトル、クォータニオン(さらには16ビットフロート)のような典型的なものはすでにそこにあるようです。フロート精度の定数が欠落している場合は、自分で作成するだけです(起動時に毎回キャストする必要はありません)。

于 2008-10-13T18:46:24.213 に答える
1

はい、必要な精度がそれだけである場合、フロートでエンドツーエンドで作業することにより、パフォーマンスが大幅に向上します。

CenterSpace ソフトウェアからNMathライブラリを確認してください。Float、Double、および複合型は、ライブラリ全体で一貫してサポートされています。

ポール

于 2009-10-27T05:45:24.630 に答える