High FPS
Posted: Mon Feb 16, 2015 5:48 pm
I'm not sure if anyone else has this problem, but in some computers LOVE fps seems to be too high, even with vsync on. I made a small game for a friend here and the games runs at 600 fps in his PC, even though it runs smoothly at 60fps in mine. Is there a reason for that? I tried to fix this problem using a rewrite of lua.run() function but I'm unsure whether this is the best solution or not.
Code: Select all
maxfps = 60
function love.run()
if love.math then
love.math.setRandomSeed(os.time())
for i=1,3 do love.math.random() end
end
if love.event then
love.event.pump()
end
if love.load then love.load(arg) end
-- We don't want the first frame's dt to include time taken by love.load.
if love.timer then love.timer.step() end
local dt = 0
-- Main loop time.
while true do
-- Process events.
local frametimestart = love.timer.getTime()
if love.event then
love.event.pump()
for e,a,b,c,d in love.event.poll() do
if e == "quit" then
if not love.quit or not love.quit() then
if love.audio then
love.audio.stop()
end
return
end
end
love.handlers[e](a,b,c,d)
end
end
-- Update dt, as we'll be passing it to update
if love.timer then
love.timer.step()
dt = love.timer.getDelta()
end
-- Call update and draw
if love.update then love.update(dt) end -- will pass 0 if love.timer is disabled
if love.window and love.graphics and love.window.isCreated() then
love.graphics.clear()
love.graphics.origin()
if love.draw then love.draw() end
love.graphics.present()
end
local frametimeend = love.timer.getTime()
local framedelta = frametimeend - frametimestart
if maxfps and maxfps > 0 then -- 0 is unlimited
local max_dt = 1/maxfps
local sleeptime = max_dt - framedelta
if sleeptime >= 0.001 then -- love will truncate anything less than 1ms down to 0 internally
love.timer.sleep(sleeptime)
end
else
if love.timer then love.timer.sleep(0.001) end
end
end
end