所以我做了一个游戏循环,使用SDL_Delay
函数来限制frames per second
,它看起来像这样:
//While the user hasn't qui
while( stateID != STATE_EXIT )
{
//Start the frame timer
fps.start();
//Do state event handling
currentState->handle_events();
//Do state logic
currentState->logic();
//Change state if needed
change_state();
//Do state rendering
currentState->render();
//Update the screen
if( SDL_Flip( screen ) == -1 )
{
return 1;
}
//Cap the frame rate
if( fps.get_ticks() < 1000 / FRAMES_PER_SECOND )
{
SDL_Delay( ( 1000 / FRAMES_PER_SECOND ) - fps.get_ticks() );
}
}
所以当我运行我的游戏时60 frames per second
(我假设这是“眼帽”),我仍然可以看到滞后类型的运动,这意味着我看到帧独立出现,导致运动不流畅。
这是因为显然SDL_Delay
功能不太准确,导致+,- 15 milliseconds
帧之间的差异大于我想要的。
(所有这些只是我的假设)
所以我只是在寻找一个好的和准确的计时器来帮助我解决这个问题。
有什么建议么?