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