3

最近、いくつかのDirectXコードをプログラムに追加しましたが、現在、doubleデータ型変数はfloatの範囲/解像度しか持っていません(..または以前よりも少なくとも範囲/解像度が低くなっています)。direct3Dの初期化( "Direct3DCreate9(D3D_SDK_VERSION)"を削除すると、問題は解決します。何か洞察はありますか?ありがとう。

4

2 に答える 2

7

Direct3D は FPU の状態を変更して、単精度モードを強制します。

倍精度モードを保持するD3DCREATE_FPU_PRESERVE場合は、D3D デバイスを作成するときに使用します。ただし、これは D3D のパフォーマンスに影響します。

http://msdn.microsoft.com/en-us/library/bb172527(VS.85).aspx

于 2009-02-18T00:07:29.507 に答える
1

このブログ エントリDirect3D and the FPUで説明されているように、FPU モードを単精度に変更しないように Direct3D に指示できます。

幸いなことに、FPU をまったくいじらないように Direct3D に指示するだけで、これらすべてを回避できます。デバイスを作成するときは、CreateFlags.FpuPreserve フラグを使用して CLR の倍精度を維持し、コードが期待どおりに機能するようにする必要があります。

于 2009-02-18T00:11:26.003 に答える