次のコードは節電を行いますが、FPS は適切に制限されません。フレームレートを 60 FPS でロックすることになっている場合、82 が得られます。30 の場合も同様で、49 FPS が得られます。
FPS の計算:
previousTime = currentTime;
currentTime = SDL_GetTicks();
fps_++;
if (currentTime - lastOutput >= 1000)
{
lastOutput = currentTime;
fps = fps_; // the variable 'fps' is displayed
fps_ = 0;
}
FPS の制限:
if (currentTime - previousTime < 1000 / maxFPS)
{
SDL_Delay(1000 / maxFPS - currentTime + previousTime);
}
私は何を台無しにしましたか?