Difference between revisions of "Canvas"
m |
m (→Drawing something to the Canvas and then the Canvas itself.) |
||
Line 36: | Line 36: | ||
* [[parent::Object]] | * [[parent::Object]] | ||
== Examples == | == Examples == | ||
− | === Drawing something to the Canvas and then the Canvas | + | === Drawing something to the Canvas and then draw the Canvas to the screen. === |
<source lang="lua"> | <source lang="lua"> | ||
function love.load() | function love.load() | ||
Line 43: | Line 43: | ||
-- Rectangle is drawn to the canvas with the alpha blend mode. | -- Rectangle is drawn to the canvas with the alpha blend mode. | ||
love.graphics.setCanvas(canvas) | love.graphics.setCanvas(canvas) | ||
− | + | love.graphics.clear() | |
− | love.graphics.setBlendMode( | + | love.graphics.setBlendMode("alpha") |
love.graphics.setColor(255, 0, 0, 128) | love.graphics.setColor(255, 0, 0, 128) | ||
love.graphics.rectangle('fill', 0, 0, 100, 100) | love.graphics.rectangle('fill', 0, 0, 100, 100) | ||
Line 54: | Line 54: | ||
-- The rectangle from the Canvas was already alpha blended. | -- The rectangle from the Canvas was already alpha blended. | ||
− | -- Use the premultiplied blend mode when drawing the Canvas itself to prevent | + | -- Use the premultiplied alpha blend mode when drawing the Canvas itself to prevent improper blending. |
− | love.graphics.setBlendMode( | + | love.graphics.setBlendMode("alpha", "premultiplied") |
love.graphics.draw(canvas) | love.graphics.draw(canvas) | ||
− | -- Observe the difference if the Canvas is drawn with the alpha blend mode instead. | + | -- Observe the difference if the Canvas is drawn with the regular alpha blend mode instead. |
− | love.graphics.setBlendMode( | + | love.graphics.setBlendMode("alpha") |
love.graphics.draw(canvas, 100, 0) | love.graphics.draw(canvas, 100, 0) | ||
− | -- Rectangle is drawn directly to the screen with the alpha blend mode. | + | -- Rectangle is drawn directly to the screen with the regular alpha blend mode. |
− | love.graphics.setBlendMode( | + | love.graphics.setBlendMode("alpha") |
love.graphics.setColor(255, 0, 0, 128) | love.graphics.setColor(255, 0, 0, 128) | ||
love.graphics.rectangle('fill', 200, 0, 100, 100) | love.graphics.rectangle('fill', 200, 0, 100, 100) |
Revision as of 00:44, 13 January 2016
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.
Some very old graphics cards do not support canvases, and will throw an error if you attempt to use them. Use love.graphics.isSupported("canvas") to check for support at runtime. |
Contents
Constructors
love.graphics.newCanvas | Creates a new Canvas. | 0.8.0 |
Functions
Canvas:clear | Clears the contents of a Canvas to a specific color. | 0.8.0 | 0.10.0 |
Canvas:generateMipmaps | Generates mipmaps for the Canvas, based on the contents of the highest-resolution mipmap level. | 11.0 | |
Canvas:getFSAA | Gets the number of FSAA samples used when drawing to the Canvas. | 0.9.1 | 0.10.0 |
Canvas:getFormat | Gets the texture format of the Canvas. | 0.9.1 | 11.0 |
Canvas:getImageData | Generates ImageData from the contents of the Canvas. | 0.8.0 | 0.10.0 |
Canvas:getMSAA | Gets the number of MSAA samples used when drawing to the Canvas. | 0.9.2 | |
Canvas:getMipmapMode | Gets the MipmapMode this Canvas was created with. | 11.0 | |
Canvas:getPixel | Gets the pixel at the specified position in a Canvas. | 0.9.0 | 0.10.0 |
Canvas:newImageData | Generates ImageData from the contents of the Canvas. | 0.10.0 | |
Canvas:renderTo | Render to a Canvas using a function. | 0.8.0 | |
Object:release | Immediately destroys the object's Lua reference. | 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
Drawing something to the Canvas and then draw the Canvas to the screen.
function love.load()
canvas = love.graphics.newCanvas(800, 600)
-- Rectangle is drawn to the canvas with the alpha blend mode.
love.graphics.setCanvas(canvas)
love.graphics.clear()
love.graphics.setBlendMode("alpha")
love.graphics.setColor(255, 0, 0, 128)
love.graphics.rectangle('fill', 0, 0, 100, 100)
love.graphics.setCanvas()
end
function love.draw()
love.graphics.setColor(255, 255, 255, 255)
-- The rectangle from the Canvas was already alpha blended.
-- Use the premultiplied alpha blend mode when drawing the Canvas itself to prevent improper blending.
love.graphics.setBlendMode("alpha", "premultiplied")
love.graphics.draw(canvas)
-- Observe the difference if the Canvas is drawn with the regular alpha blend mode instead.
love.graphics.setBlendMode("alpha")
love.graphics.draw(canvas, 100, 0)
-- Rectangle is drawn directly to the screen with the regular alpha blend mode.
love.graphics.setBlendMode("alpha")
love.graphics.setColor(255, 0, 0, 128)
love.graphics.rectangle('fill', 200, 0, 100, 100)
end
See Also
Other Languages
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info