Canvas (Nederlands)
Available since LÖVE 0.8.0 |
Het is hernoemd van Framebuffer. |
Een canvas wordt gebruikt voor off-screen rendering. Denk eraan als een onzichtbaar scherm waar je op kunt tekenen, maar dat pas zichtbaar wordt wanneer je het op het daadwerkelijk zichtbare scherm tekent. Het staat ook bekend als "render to texture".
Door dingen die niet vaak van positie veranderen (zoals achtergrondelementen) naar het Canvas te tekenen en vervolgens het hele Canvas in plaats van elk item te tekenen, kun je het aantal tekenoperaties verminderen dat elke frame wordt uitgevoerd.
In versies vóór 0.10.0 konden niet alle grafische kaarten die door LÖVE werden ondersteund Canvassen gebruiken. love.graphics.isSupported("canvas") kon worden gebruikt om tijdens runtime te controleren of ondersteuning aanwezig was.
Bij het tekenen van inhoud op een Canvas met reguliere alpha blending, worden de alpha-waarden van de inhoud vermenigvuldigd met de RGB-waarden ervan.
Daarom zullen de pixelkleuren van het Canvas vooraf vermenigvuldigde alpha hebben zodra het is getekend, dus bij het tekenen van het Canvas op het scherm of op een ander Canvas, moet je gebruik maken van vooraf vermenigvuldigde alpha blending – love.graphics.setBlendMode("alpha", "premultiplied"). |
Contents
Constructors
love.graphics.newCanvas | Creates a new Canvas. | 0.8.0 |
Functions
Canvas:clear (Nederlands) | Clears the contents of a Canvas to a specific color. | 0.8.0 | 0.10.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. | ||
Texture:getDPIScale | Gets the DPI scale factor of the Texture. | 11.0 | |
Texture:getDepth | Gets the depth of a Volume Texture. | 11.0 | |
Texture:getDepthSampleMode | Gets the comparison mode used when sampling from a depth texture in a shader. | 11.0 | |
Texture:getDimensions | Gets the width and height of the Texture. | 0.9.0 | |
Texture:getFilter | Gets the filter mode of the Texture. | ||
Texture:getFormat | Gets the pixel format of the Texture. | 11.0 | |
Texture:getHeight | Gets the height of the Texture. | ||
Texture:getLayerCount | Gets the number of layers / slices in an Array Texture. | 11.0 | |
Texture:getMipmapCount | Gets the number of mipmaps contained in the Texture. | 11.0 | |
Texture:getMipmapFilter | Gets the mipmap filter mode for a Texture. | 0.9.0 | |
Texture:getPixelDimensions | Gets the width and height in pixels of the Texture. | 11.0 | |
Texture:getPixelHeight | Gets the height in pixels of the Texture. | 11.0 | |
Texture:getPixelWidth | Gets the width in pixels of the Texture. | 11.0 | |
Texture:getTextureType | Gets the type of the Texture. | 11.0 | |
Texture:getWidth | Gets the width of the Texture. | ||
Texture:getWrap | Gets the wrapping properties of a Texture. | ||
Texture:isReadable | Gets whether the Texture can be drawn and sent to a Shader. | 11.0 | |
Texture:setDepthSampleMode | Sets the comparison mode used when sampling from a depth texture in a shader. | 11.0 | |
Texture:setFilter | Sets the filter mode of the Texture. | ||
Texture:setMipmapFilter | Sets the mipmap filter mode for a Texture. | 0.9.0 | |
Texture:setWrap | Sets the wrapping properties of a Texture. |
Enums
MipmapMode | Controls whether a Canvas has mipmaps, and its behaviour when it does. | 11.0 |
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 regular/default alpha blend mode ("alphamultiply").
love.graphics.setCanvas(canvas)
love.graphics.clear(0, 0, 0, 0)
love.graphics.setBlendMode("alpha")
love.graphics.setColor(1, 0, 0, .5)
love.graphics.rectangle("fill", 0,0, 100,100)
love.graphics.setCanvas()
end
function love.draw()
-- The colors for the rectangle on the canvas have already been alpha blended.
-- Use the "premultiplied" alpha blend mode when drawing the canvas to the screen for proper color blending.
-- (Also set the color to white so the canvas itself doesn't get tinted.)
love.graphics.setBlendMode("alpha", "premultiplied")
love.graphics.setColor(1, 1, 1, 1)
love.graphics.draw(canvas, 0,0)
-- 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(1, 0, 0, .5)
love.graphics.rectangle("fill", 200,0, 100,100)
-- (Helper texts.)
love.graphics.setColor(1, 1, 1, 1)
love.graphics.printf("canvas", 0,0, 100)
love.graphics.printf("incorrect\n(looks too dark)", 100,0, 100)
love.graphics.printf("rectangle\n(what canvas should look like)", 200,0, 100)
end
Save canvas as picture
canvas:newImageData():encode("png","filename.png")
See Also
- love.graphics
- love.graphics.setCanvas
- love.graphics.setBlendMode
- love.graphics.isSupported
- love.graphics.getDimensions
- love.graphics.draw
- ImageData:encode
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