Views
love.graphics.setStencil
Available since LÖVE 0.8.0 |
This function is not supported in earlier versions. |
Defines or releases a stencil for the drawing operations.
The passed function draws to the stencil instead of the screen, creating an image with transparent and opaque pixel. While active, it is used to test where pixel will be drawn or discarded.
Calling the function without arguments releases the active stencil.
Function
Synopsis
love.graphics.setStencil( stencilFunction )
Arguments
function stencilFunction
- Function that draws the stencil.
Returns
Nothing.
Function
Synopsis
love.graphics.setStencil( )
Arguments
None.
Returns
Nothing.
Notes
Releases the active stencil.
Examples
Drawing circles masked by a rectangle
myStencilFunction = function()
love.graphics.rectangle("fill", 225, 200, 350, 300)
end
myStencil = love.graphics.newStencil(myStencilFunction)
love.graphics.setStencil(myStencil)
love.graphics.setColor(255, 0, 0, 120)
love.graphics.circle("fill", 300, 300, 150, 50)
love.graphics.setColor(0, 255, 0, 120)
love.graphics.circle("fill", 500, 300, 150, 50)
love.graphics.setColor(0, 0, 255, 120)
love.graphics.circle("fill", 400, 400, 150, 50)
love.graphics.rectangle("fill", 225, 200, 350, 300)
end
myStencil = love.graphics.newStencil(myStencilFunction)
love.graphics.setStencil(myStencil)
love.graphics.setColor(255, 0, 0, 120)
love.graphics.circle("fill", 300, 300, 150, 50)
love.graphics.setColor(0, 255, 0, 120)
love.graphics.circle("fill", 500, 300, 150, 50)
love.graphics.setColor(0, 0, 255, 120)
love.graphics.circle("fill", 400, 400, 150, 50)
Drawing a circle with a hole
myStencilFunction = function()
love.graphics.circle("fill", 400, 300, 50)
end
myStencil = love.graphics.newStencil(myStencilFunction)
love.graphics.setInvertedStencil(myStencil)
love.graphics.circle("fill", 400, 300, 150)
love.graphics.circle("fill", 400, 300, 50)
end
myStencil = love.graphics.newStencil(myStencilFunction)
love.graphics.setInvertedStencil(myStencil)
love.graphics.circle("fill", 400, 300, 150)
Drawing two masked triangles with different colors
myStencilFunction = function()
love.graphics.circle("fill", 400, 300, 60, 25)
end
myStencil = love.graphics.newStencil(myStencilFunction)
love.graphics.setStencil(myStencil)
love.graphics.setColor(155, 0, 128)
love.graphics.triangle("fill", 400, 200, 486, 350, 314, 350)
love.graphics.setInvertedStencil(myStencil)
love.graphics.setColor(144, 214, 128)
love.graphics.triangle("fill", 400, 200, 486, 350, 314, 350)
love.graphics.circle("fill", 400, 300, 60, 25)
end
myStencil = love.graphics.newStencil(myStencilFunction)
love.graphics.setStencil(myStencil)
love.graphics.setColor(155, 0, 128)
love.graphics.triangle("fill", 400, 200, 486, 350, 314, 350)
love.graphics.setInvertedStencil(myStencil)
love.graphics.setColor(144, 214, 128)
love.graphics.triangle("fill", 400, 200, 486, 350, 314, 350)
See Also