我正在编写一个C++/SDL/OpenGL应用程序,遇到了一个奇怪的错误。使用简单的变量时间步长时,游戏似乎运行正常。但是FPS开始表现异常。我发现Sleep(1)和SDL_Delay(1)函数在执行时都需要15毫秒的时间。在0-15之间的任何输入都需要15毫秒才能完成,将FPS锁定在大约64。如果将其设置为16,则需要30毫秒O.O。
我的循环看起来像这样:
我的循环看起来像这样:
while (1){
GLuint t = SDL_GetTicks();
Sleep(1); //or SDL_Delay(1)
cout << SDL_GetTicks() - t << endl; //outputs 15
}
通常情况下,它不会像预期的那样只需要1毫秒,而是大多数情况下需要15毫秒。
我的操作系统是Windows 8.1。CPU是英特尔i7。我正在使用SDL2。