Difference between revisions of "Canvas"

(Color blending example)
m
Line 53: Line 53:
 
 
 
love.graphics.setBlendMode 'alpha'
 
love.graphics.setBlendMode 'alpha'
 +
-- love.graphics.setBlendMode 'premultiplied' -- use this to avoid a second alpha blend
 
love.graphics.setColor(255,255,255,255)
 
love.graphics.setColor(255,255,255,255)
 
love.graphics.draw(canvas)
 
love.graphics.draw(canvas)

Revision as of 01:03, 7 June 2013

O.png Some older graphics cards do not support canvases, and will throw an error if you attempt to use them. You should try to avoid using canvases unless you can not achieve the desired effect without them, to avoid excluding users.  


Available since LÖVE 0.8.0
It has been renamed from Framebuffer.


A Canvas is used for off-screen rendering. Think of it as an invisible screen that you can draw to, but that will not be visible until you draw it to the actual visible screen. It is also known as "render to texture".

By drawing things that do not change position often (such as background items) to the Canvas, and then drawing the entire Canvas instead of each item, you can reduce the number of draw operations performed each frame.

Canvases can be susceptible to power of 2 syndrome. Most graphics cards that support Canvas should have non-PO2 texture support. However, there are some old cards that do not. Check with love.graphics.isSupported("npot") if it is supported.

Constructors

love.graphics.newCanvas Creates a new Canvas. Added since 0.8.0

Functions

Canvas:clear Clears the contents of a Canvas to a specific color. Added since 0.8.0 Removed in 0.10.0
Canvas:generateMipmaps Generates mipmaps for the Canvas, based on the contents of the highest-resolution mipmap level. Added since 11.0
Canvas:getFSAA Gets the number of FSAA samples used when drawing to the Canvas. Added since 0.9.1 Removed in 0.10.0
Canvas:getFormat Gets the texture format of the Canvas. Added since 0.9.1 Removed in 11.0
Canvas:getImageData Generates ImageData from the contents of the Canvas. Added since 0.8.0 Removed in 0.10.0
Canvas:getMSAA Gets the number of MSAA samples used when drawing to the Canvas. Added since 0.9.2
Canvas:getMipmapMode Gets the MipmapMode this Canvas was created with. Added since 11.0
Canvas:getPixel Gets the pixel at the specified position in a Canvas. Added since 0.9.0 Removed in 0.10.0
Canvas:newImageData Generates ImageData from the contents of the Canvas. Added since 0.10.0
Canvas:renderTo Render to a Canvas using a function. Added since 0.8.0
Object:release Immediately destroys the object's Lua reference. Added since 11.0
Object:type Gets the type of the object as a string.
Object:typeOf Checks whether an object is of a certain type.

Supertypes

Examples

sample from the forum

http://love2d.org/forums/viewtopic.php?f=4&t=2136&start=20

Color blending is applied when rendering to a canvas and again when drawing the canvas.

canvas = love.graphics.newCanvas(800,600)

function love.draw()
	-- the rectangle is alpha blended twice
	canvas:clear()
	canvas:renderTo(function()
		love.graphics.setBlendMode 'alpha'
		love.graphics.setColor(255,0,0,128)
		love.graphics.rectangle('fill',0,0,100,100)
	end)
	
	love.graphics.setBlendMode 'alpha'
	-- love.graphics.setBlendMode 'premultiplied' -- use this to avoid a second alpha blend
	love.graphics.setColor(255,255,255,255)
	love.graphics.draw(canvas)
	
	-- the rectangle is alpha blended once
	love.graphics.setBlendMode 'alpha'
	love.graphics.setColor(255,0,0,128)
	love.graphics.rectangle('fill',100,0,100,100)
end

See Also


Other Languages