## Canvas is this a good way to use it ?

Questions about the LÖVE API, installing LÖVE and other support related questions go here.
Forum rules
gcmartijn
Citizen
Posts: 50
Joined: Sat Dec 28, 2019 6:35 pm

### Canvas is this a good way to use it ?

Yust to be sure, I already saw that I can use multiple canvas to draw thing in the background and use it later, and this is working for all devices.
This is something else then love.graphics.isSupported("multicanvas") that I don't want to use because I don't want to use simultaneously drawing and has less support.

The cool thing about a canvas is, that I can draw everything using 0,0 top left so its more easy to do some things (for me).

1.
Using more than one canvas, will that cost more gpu/cpu/mem ?

2.
But the real question is this, code below, is that the way to do it ?
See the top and bottom canvas like a menu and don't update very often.
The game is in the middle canvas.

Code: Select all

function love.load()
canvasTop = love.graphics.newCanvas(config.screenWidth, 50)
canvasMiddle = love.graphics.newCanvas(config.screenWidth, 550)
canvasBottom = love.graphics.newCanvas(config.screenWidth, 90)
love.graphics.setCanvas(canvasBottom)
love.graphics.setColor(1, 0, 0, 0.5)
love.graphics.rectangle("fill", 0, 0, config.screenWidth, 90)
love.graphics.setCanvas()
end

function love.update(dt)
-- nothing for canvas functions
end

function love.draw()

love.graphics.setColor(1, 1, 1, 1)
love.graphics.setCanvas(self.canvasTop)
-- do draw things for canvas Top

love.graphics.setColor(1, 1, 1, 1)
love.graphics.setCanvas(canvasMiddle)
-- do draw things for canvas Middle

-- do draw things for canvas bottom, or is this better in the love.update function
canvasBottom:renderTo(
function()
love.graphics.clear()
-- ^ Now because I use this, I can't do dynamic drawing like the rule below (because it will render over the other text)
-- But now the whole idea about a canvas is 'faster' is away now,  but it is still easy to use I think.
love.graphics.print("x: " .. tostring(love.mouse.getX()) .. " y: " .. tostring(love.mouse.getY()), 0, 0)

-- The idea about the canvasBottom is to hold some buttons and indicators, so maybe this is the good way to do it
if newUpdate then
love.graphics.clear()
end

-- and do the things
end
)

-- draw everything
love.graphics.setCanvas()
love.graphics.draw(canvasTop, 0, 0, 0, 1, 1)
love.graphics.draw(canvasMiddle, 0, 50, 0, 1, 1)
love.graphics.draw(canvasBottom, 0, 550, 0, 1, 1)
end


### Who is online

Users browsing this forum: busboy and 19 guests