そこで、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
、フレーム間の違いが私が望んでいるものよりも大きいためです。
(これらはすべて私の仮定です)
そのため、この問題の解決に役立つ優れた正確なタイマーを探しています。
助言がありますか?