Canvas (Русский)
Available since LÖVE 0.8.0 |
It has been renamed from Framebuffer. |
Холст пре-рендера используется для внеэкранного рендеринга. Это невидимый экран на которым вы можете нарисовать то что будет отображено позже. Известен так же как "Рендер в текстуру"
Одно из практических применений это оптимизация рендера, ведь рисуя на таком холсте объекты, которые меняются не часто, например фон, можно заметно увеличить производительность.
В версиях до 0.10.0 не на всех видеокартах LOVE поддерживает Canvases love.graphics.isSupported("canvas") проверка поддержки видеокартой подобного рендера.
При рисовании содержимого на холсте с использованием обычного Альфа-смешивания Альфа-значения содержимого умножаются на значения RGB. Поэтому цвета пикселей холста будут иметь" предварительно умноженную Альфа", как только он будет нарисован, поэтому при рисовании холста на экран или на другой холст вы должны использовать предварительно умноженное Альфа – смешивание - love.graphics.setBlendMode(""alpha", "premultiplied"). |
Contents
Конструкторы
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. | ||
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. |
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 alpha blend mode.
love.graphics.setCanvas(canvas)
love.graphics.clear()
love.graphics.setBlendMode("alpha")
love.graphics.setColor(1, 0, 0, 0.5)
love.graphics.rectangle('fill', 0, 0, 100, 100)
love.graphics.setCanvas()
end
function love.draw()
-- very important!: reset color before drawing to canvas to have colors properly displayed
-- see discussion here: https://love2d.org/forums/viewtopic.php?f=4&p=211418#p211418
love.graphics.setColor(1, 1, 1, 1)
-- 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(1, 0, 0, 0.5)
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