我正在编写一个C++/SDL/OpenGL应用程序,并且我有最奇怪的错误。游戏似乎在一个简单的可变时间步法下工作正常。但是,然后FPS开始表现奇怪。我发现Sleep(1)和SDL_Delay(1)需要15 ms才能完成。睡眠(1)和SDL_Delay(1)需要15 ms
任何输入到这些功能0-15之间需要15ms的完成,在大约64锁定FPS如果我将其设置为16,它需要30 MS O.O
我不知道为什么会这样。这是我遇到过的最奇怪的错误。
我的循环如下所示:
while (1){
GLuint t = SDL_GetTicks();
Sleep(1); //or SDL_Delay(1)
cout << SDL_GetTicks() - t << endl; //outputs 15
}
,因为它被认为它将很少需要1毫秒,但多数人的花费的时间为15ms。
我的操作系统是windows 8.1。 CPU是英特尔i7。我正在使用SDL2。任何想法将不胜感激,因为我很无能。
[WinAPI Sleep()函数调用可能重复睡眠时间超过预期](http://stackoverflow.com/questions/9518106/winapi-sleep-function-睡眠时间超过预期) –
如果您希望实时唤醒线程/进程,您不想让其进入睡眠状态。如果您不想担心计划,请使用螺旋锁。 –