質問はかなり「簡単」です。私は、C# で SlimDX を使用して DirectX9 と DirectX10 の両方で動作するエンジンを持っています。Stopwatch クラスを使用して、ゲームの時間を計り、ルーチンの速度をテストします。不思議なことに、DirectX9 の作成直後に StopWatch の浮動小数点が異常になり、GetTimeStamp()/Frequency 除算が整数値 (.000000 の単一値) のみを返します。なぜこれ?DirectX10 では、この問題は存在しないことに注意してください。(DirectX9でデバイスを開く直前にチェックを行うと、動作しません。)
これは、両方のバージョン (DirectX10 と DirectX9) で使用するコードです。
(Double)Stopwatch.GetTimestamp() * 1000d / (Double)Stopwatch.Frequency
手がかりはありますか?
編集: QueryPerformanceCounter を使用してテストしましたが、結果は同じです。DirectX9 デバイスを作成する前に完全な計算を行い、その後は整数のみを作成します。
EDIT2:いくつかのテストの後、いくつかの浮動小数点値を表示することができましたが、精度が DirectX10 のものとはかなり異なります。
ここにいくつかの例があります:
DirectX10
フォームの作成: 110.09241
LoadContent フル: 738.64486
LoadContent ContentManager: 593.57572
DirectX9
フォーム作成: 112.45000
LoadContent フル: 489.50000
LoadContent ContentManager: 355.50000
EDIT3:別のマシンでテストした結果は同じです...デバイスを作成する前はすべて問題ありませんが、整数のみの後...