あなたが望んでも倍精度を使用できるモバイルGPUを見つけるのは難しいので、選択の一部はほとんどあなたのために作られています。
ゲームで単精度浮動小数点数から切り替えるとメリットが得られる場所はほんのわずかです。
これらは、カバーする必要のある範囲でかなりの精度を失うため、単精度のフロートに格納してはならない最も一般的な2つの例です(ゲームの最初の1秒では、経過時間を表すことができます)時間内に 2− 24 秒、または数十ナノ秒ですが、2.5時間後、ミリ秒の精度が失われ始めます)
ただし、必ずしもdoubleを使用する必要があるという意味ではありません。整数型はこれらの値を問題なく処理できます。(32ビットintは、12日間の連続再生でミリ秒の精度を提供します。64ビットintは数百万年持続します)
デルタ時間値は、単精度浮動小数点に格納する程度にあなたの精度を提供しますので、通常は、16ミリ秒のオーダーであります2− 29s、これはまだナノ秒のレベルまで下がっています—つまり とにかく、コードのタイミングを確実に計り、スレッドに信号を送ったり、グラフィックスの更新を調整したりできる精度をはるかに超えています。ここでdoubleを使用して精度を高めても、測定可能な方法でゲームを改善することはできません。
したがって、合計経過時間を高精度で格納するか、整数型を使用して、デルタを計算し、フレームごとに1回単精度浮動小数点数に変換してから、そこから浮動小数点数をうまく使用できます。
ポジションについても同様です。巨大な世界であっても、それを数km以下のチャンクに分割した場合、単精度フロートは、親チャンクに対して1ミリメートル未満の精度で位置を特定できます。
オブジェクト間の相対的なオフセット(見出しなどを計算するため)は、通常、非常に遠く離れていても、フロートに格納するには問題ありません。ベクトルの全長と比較した場合の相対的な誤差は、制御された範囲内に留まります。
したがって、デフォルトとしてdoubleを使用する理由はあまりありません。フロートの精度を計算した非常に特別なニーズがある場合にのみ、フロートの精度が低下せず、倍精度浮動小数点数の使用をゲームの積極的に必要とする部分にのみ保持することを検討します。