-- love2d perspective demo -- request love2d 11.3 function love.load() tp = require "perspective" love.graphics.setDefaultFilter("linear", "linear", 2) wdw_w, wdw_h = love.graphics.getDimensions() -- img = love.graphics.newImage("uvcheckermap01-512.png") img = love.graphics.newImage("scifitex02_tex.png") w0, w1 = 300, 1200 x0 = wdw_w / 2 - w0 / 2 x1 = wdw_w / 2 - w1 / 2 y0, y1 = wdw_h / 2, wdw_h v = { {x0, y0}, {x0 + w0, y0}, {x1 + w1, y1}, {x1, y1} } -- tp:setRepeat( {0.25, 0.25}, {0.75, 0.75} ) -- local ih = img:getHeight() -- tp:setRepeat( {253 / ih, 50 /ih}, {80 / ih, 80 / ih} ) love.graphics.setBackgroundColor(0.2, 0.4, 0.8, 1.0) bg_x = 0 bg_w = 100 guide = true end function love.update(dt) bg_x = (bg_x + 200 * dt) % w0 local scale = w1 / w0 v[1][1] = (wdw_w / 2) - bg_x v[4][1] = (wdw_w / 2) - (bg_x * scale) v[2][1] = v[1][1] + w0 v[3][1] = v[4][1] + w0 * scale end function love.draw() -- draw perspective quad love.graphics.setColor(1, 1, 1, 1) tp:setShaderOnly(img, v[1], v[2], v[3], v[4]) love.graphics.rectangle("fill", 0, wdw_h / 2, wdw_w, wdw_h / 2) tp:off() -- draw guide if guide then love.graphics.setColor(0, 1, 0, 0.25) love.graphics.polygon("fill", v[1][1], v[1][2], v[2][1], v[2][2], v[3][1], v[3][2], v[4][1], v[4][2], v[1][1], v[1][2]) end -- print FPS love.graphics.setColor(1, 1, 1, 1) love.graphics.print("FPS: "..love.timer.getFPS(), 4, 4) love.graphics.print("G key : Guide on/off", 4, 24) end function love.keypressed(key, isrepeat) -- ESC to exit if key == "escape" then love.event.quit() end if key == "g" then guide = not guide end end