I'm playing around with deliberately trying to limit the FPS of my game. I've modified love.run to do this, using an accumulator and updating every 1/30th of a second. I believe this should only draw to the screen once every 1/30th of a second, approximately.
...
if love.timer then dt = love.timer.step() end
accumulator = accumulator + dt
if accumulator >= tick_rate then
accumulator = 0
if love.update then love.update() end
if love.graphics and love.graphics.isActive() then
love.graphics.origin()
love.graphics.clear(love.graphics.getBackgroundColor())
if love.draw then love.draw() end
love.graphics.present()
end
end
if love.timer then love.timer.sleep(0.001) end
For some reason, love.timer.getFPS() reports very high FPS (400+) even with vsync on. Why is this?
Löve uses its internal timer... internally, to calculate the value you get back with getFPS and with related functions as well; basically, it's all dependent on the love.timer.step() call, which -is- outside your fixed time step function.
getFPS does not do any magic with detecting how fast löve renders frames to the gpu, basically.
You could redefine the function, to return 1 / tick_rate, but... that's kinda pointless if implemented exactly like that.
Me and my stuff True Neutral Aspirant. Why, yes, i do indeed enjoy sarcastically correcting others when they make the most blatant of spelling mistakes. No bullying or trolling the innocent tho.