Re: Canvas & Stencil in Love 11.0
Posted: Sat Jul 06, 2019 7:55 pm
Maybe try to contact the Scrale author? Personally I have never used it.
Code: Select all
local function myStencilFunction()
love.graphics.rectangle("fill", 225, 200, 350, 300)
end
function love.load()
canvas_main = love.graphics.newCanvas()
end
function love.draw()
love.graphics.setCanvas({canvas_main, stencil=true})
-- draw a rectangle as a stencil. Each pixel 'above' the rectangle will have its 'stencil value' set to 1. The rest will be 0.
-- Note the 'above' bit. In order for the stencil to take effect, the things effected by it should appear AFTER the stencil shape,
-- and INSIDE the 'setStencilTest' sandwich.
love.graphics.stencil(myStencilFunction, "replace", 1)
love.graphics.setColor(255, 255, 255, 255)
--White background
love.graphics.rectangle('fill',0,0,love.graphics.getWidth(),love.graphics.getHeight()) -- Things outside the 'StencilTest' sandwich will NOT be effected.
-- Beginning of 'stencilTest' sandwich.
-- Only allow rendering on pixels which have a 'stencil value' smaller than 1.
love.graphics.setStencilTest("less", 1)
love.graphics.setColor(255, 0, 0, 255)
love.graphics.circle("fill", 300, 300, 150, 50)
love.graphics.setColor(0, 255, 0, 255)
love.graphics.circle("fill", 500, 300, 150, 50)
love.graphics.setColor(0, 0, 255, 255)
love.graphics.circle("fill", 400, 400, 150, 50)
-- Ending of 'stencilTest' sandwich.
-- using the "setStencilTest()" function again as seen below, closes and "sandwiches" the entire stencil department. This is how you use it!
love.graphics.setStencilTest()
love.graphics.setColor(0, 0, 0, 255)
-- Black line going across the screen
love.graphics.rectangle('fill',0,love.graphics.getHeight()/2,love.graphics.getWidth(),10) -- Things outside the 'StencilTest' sandwich will NOT be effected.
love.graphics.setCanvas()
love.graphics.setColor(1,1,1)
love.graphics.draw(canvas_main)
end
Can you link me to that fix? I can't seem to find it.MissDanish wrote: ↑Thu Apr 05, 2018 10:55 pm btw canvases are broken in 11.0 unless you use the fix smile linked in the 11.0 release thread. Sometimes they refuse to draw on screen
The code you've posted works for me the same, with and without canvas. Sounds like a graphics driver issue.Jack Dandy wrote: ↑Tue Jul 09, 2019 6:18 pm Just to be sure, I tried making a simple program, where a stencil is used on a canvas.
No involvement of Scrale.
If you'll try it, you can see the stencil doesn't work. (If you uncomment the 1st line and the last 3 lines in love.draw, you can see it for yourself)
Any tips?
Code: Select all
[...]
https://love2d.org/forums/viewtopic.php ... 03#p219603Jack Dandy wrote: ↑Tue Jul 09, 2019 6:18 pmCan you link me to that fix? I can't seem to find it.MissDanish wrote: ↑Thu Apr 05, 2018 10:55 pm btw canvases are broken in 11.0 unless you use the fix smile linked in the 11.0 release thread. Sometimes they refuse to draw on screen