我正在尝试制作一个游戏模拟器,但它的播放速度应该超出预期。
这是我在主循环中使用的时序码。
CLOCKSPEED
cpu.T
是gameboy cpu(4194304)每秒的周期数。 PerfCountFrequency
是迄今为止的周期。当我将它与另一个以正确速度播放的模拟器(VBA)进行比较时,我的模拟器变得更快。这有什么问题?
答案 0 :(得分:1)
睡眠是错误的功能。从https://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs.85).aspx开始,它提到了#34;如果dwMilliseconds小于系统时钟的分辨率,则线程可能会睡眠时间少于指定的时间长度"
DirectX可能有一个方法(VBLANK ??),但你可以通过计算下一个帧时间应该是什么来解决小问题,如果睡眠太小,可以节省睡眠时间,直到它超过定时器分辨率