Page 1 of 1

Different Results when drawing shapes on buffer or direct

Posted: Mon Nov 21, 2016 5:14 pm
by zaher
I draw rectangle/circle in buffer(canvas) and directly, I haven't the same results

Code: Select all

function love.load()

    buffer = love.graphics.newCanvas()
--    buffer:setFilter("nearest")
    love.graphics.setCanvas(buffer)
	love.graphics.circle("line", 100, 100, 50)
    love.graphics.rectangle("line",  100, 100, 100, 100)
--    love.graphics.setBlendMode("replace")
--	love.graphics.setColor(255,255,255)
    love.graphics.setCanvas()
end

function love.draw()
    --love.graphics.setColor(255,255,255)
    love.graphics.draw(buffer)
    love.graphics.circle("line", 300, 100, 50)
    love.graphics.rectangle("line",  300, 100, 100, 100)
end
love2d.png
love2d.png (5.84 KiB) Viewed 2492 times
How can I have the same quality as like direct drawing?

Re: Different Results when drawing shapes on buffer or direct

Posted: Mon Nov 21, 2016 5:20 pm
by slime
You'll want to use premultiplied alpha blending (instead of regular alpha blending) when drawing a Canvas to the screen:

Code: Select all

function love.load()
    buffer = love.graphics.newCanvas()
    love.graphics.setCanvas(buffer)
    love.graphics.circle("line", 100, 100, 50)
    love.graphics.rectangle("line",  100, 100, 100, 100)
    love.graphics.setCanvas()
end

function love.draw()
    love.graphics.push("all")
    love.graphics.setBlendMode("alpha", "premultiplied")
    love.graphics.draw(buffer)
    love.graphics.pop()
    love.graphics.circle("line", 300, 100, 50)
    love.graphics.rectangle("line",  300, 100, 100, 100)
end

Re: Different Results when drawing shapes on buffer or direct

Posted: Mon Nov 21, 2016 5:32 pm
by zaher
That is works fine, thank you