Visual Studio 2010 Part21
質問主です。
ライブラリの作者の方に相談したところ、これはDirect3D 9の仕様であり、計算速度を稼ぐために
CPUの浮動小数点演算の精度をfloatに変更するのがデフォルトになっているとのことでした。
それを無効化するオプションの設定方法を教えていただき、無事解決しました。 >Direct3D 9の仕様
ほう
オプション描けよ DirectXの初期化時にD3DCREATE_FPU_PRESERVEというフラグをセットすること
により、回避できるそうです。 https://docs.microsoft.com/ja-jp/windows/win32/direct3d9/d3dcreate
Direct3D 浮動小数点演算の精度を、呼び出し元のスレッドで使用される有効桁数に設定します。
このフラグを指定しない場合、Direct3D では、次の2つの理由により、
既定で単精度のラウンドツーニアモードが使用されます。
倍精度モードでは、Direct3D のパフォーマンスが低下します。
Direct3D の部分は、浮動小数点単位の例外がマスクされることを想定しています。
これらの例外をマスク解除と、未定義の動作が発生する可能性があります。
なるほど最近のバージョンでも起こり得るのかな Dirext3D内部の設定がSystem.Mathに影響を与えるってこと?w
よく知らんがFPU自体が演算精度の設定を持ってて、
プロセス全体の演算精度がそれに影響されるってこと?
聞いたことないけどマジならヤバいねw デバッグ時にのみ環境変数を設定したいのですが
プロジェクト→プロパティ構成プロパティ→デバッグ→環境
で設定しようとしても1つしか設定出来ません
hoge1=a
hoge2=b
のようにしてもhoge1のみしか有効になりません
解決策あるでしょうか? pathを複数設定するときに複数行で書けず1行にしないといけなくて困ったことあるけど、それもだめなのかよ。なんとかしてもらいたいな
ソースコード中で#ifdef DEBUGとか使って設定したら? yotube-dlってVC2010を使ってるけど脆弱性とか大丈夫? 使っているのはexe化しているpy2exeだから、
心配なら最新のPython上で動かせばいい。