-- Fake raster scroll -- init function love.load() -- set filter love.graphics.setDefaultFilter("nearest", "nearest") -- set canvas size scr_w, scr_h = 1280, 720 canvas = love.graphics.newCanvas(scr_w, scr_h) -- get window width and height wdw_w, wdw_h = love.graphics.getDimensions() scr_scale = math.min((wdw_w / scr_w), (wdw_h / scr_h)) scr_ofsx = (wdw_w - (scr_w * scr_scale)) / 2 scr_ofsy = (wdw_h - (scr_h * scr_scale)) / 2 -- load image img = love.graphics.newImage("bg_1280x720.png") -- make Quad (raster) imgs = {} bg_x = {} for i=1,scr_h do local x = 0 local y = i - 1 imgs[i] = love.graphics.newQuad(x, y, scr_w, 1, img:getDimensions()) bg_x[i] = 0 end ang = 0 end -- update function love.update(dt) -- set bg_x for i=1,scr_h do a = ang + 2 * (i-1) bg_x[i] = 16 * math.sin(math.rad(a)) end ang = ang + 360 * dt end -- draw function love.draw() -- set canvas love.graphics.setCanvas(canvas) -- fill BG color love.graphics.setColor(0, 0, 1.0) love.graphics.rectangle("fill", 0, 0, scr_w, scr_h) -- draw raster love.graphics.setColor(1.0, 1.0, 1.0) for i=1,scr_h do love.graphics.draw(img, imgs[i], bg_x[i], (i-1)) end -- unset canvas love.graphics.setCanvas() -- draw canvas to window love.graphics.setColor(1.0, 1.0, 1.0) love.graphics.draw(canvas, scr_ofsx, scr_ofsy, 0, scr_scale, scr_scale) -- print FPS love.graphics.print("FPS: "..tostring(love.timer.getFPS()), 10, 10) end function love.keypressed(key, isrepeat) -- ESC to exit if key == "escape" then love.event.quit() end end