这个问题很“简单”。我有一个引擎,可以在 C# 中使用带有 SlimDX 的 DirectX9 和 DirectX10。我使用 Stopwatch 类来计时游戏并测试一些例程的速度。奇怪的是,在创建 DirectX9 之后,秒表的浮点数变得疯狂,GetTimeStamp()/Frequency 除法只返回整数值(单个与 0.000000)。为什么这个?请注意,使用 DirectX10,此问题不存在。(如果我在 DirectX9 中打开设备之前进行检查,它可以工作,就在不这样做之后。)
这是我用于两个版本(DirectX10 和 DirectX9)的代码
(Double)Stopwatch.GetTimestamp() * 1000d / (Double)Stopwatch.Frequency
有什么线索吗?
编辑:我使用 QueryPerformanceCounter 进行了测试,但结果是一样的。在创建 DirectX9 设备之前完美计算,之后只有整数。
EDIT2:经过一些测试,我设法让它显示一些浮点值,但它们在精度上与 DirectX10 完全不同。
这是一些例子:
DirectX10
表单创建:110.09241
LoadContent Full:738.64486
LoadContent ContentManager:593.57572
DirectX9
表单创建:112.45000
LoadContent Full:489.50000
LoadContent ContentManager:355.50000
EDIT3:在另一台机器上测试,结果是一样的......在创建设备之前一切正常,只有整数......