私は現在、スタジオ用の小さなクロスプラットフォームのOpenGLベースの2Dゲームエンジンを書いています。使用する2D Vectorクラスを調査したとき、3つの異なる設計パラダイムに出くわしました。
このガマスートラの記事のように、フロート&値渡し。高速に見えますが、精度はほとんどありません(このThreadも参照してください)。プロ:高速でポータブルで、ほとんどのライブラリと互換性があります。
参照による二重呼び出し。上記の記事を正しく理解していれば、4つの浮動小数点数の代わりに2つの倍精度変数を使用することもできます。上記のスレッドによると、ダブルはフロートよりも遅いです。
doubleとfloatのテンプレート:広く普及している本「Game Engine Architecture」では、テンプレートを使用して、必要に応じてfloatとdoubleを使用できるようにしています。明らかな欠点は、コードの膨張です。また、基本的に2つのクラスを記述せずにコードを最適化できるかどうかは疑問です。
社内エンジンで使用しているソリューションや、人気のあるゲームエンジンなどの精度を確認していただければ、エンジンに実装するソリューションを決定できます。現時点では、単純に浮動小数点精度を使用してそれと共存することを考えています。