Canvas (简体中文)
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.
有些很老的显卡不支持Canvas,如果你试图使用它们将抛出一个错误。在运行时使用 love.graphics.isSupported("canvas") 来检查是否支持。 |
构造函数
love.graphics.newCanvas | Creates a new Canvas. | 0.8.0 |
函数
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. |
父类
范例
绘制一些东西到Canvas上,然后覆盖在画面上。
function love.load()
canvas = love.graphics.newCanvas(800, 600)
-- 在Canvas上用Alpha混合模式绘制一个矩形。
love.graphics.setCanvas(canvas)
canvas: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)
-- Canvas上的矩形已经使用alpha混合。
-- 绘Canvas布本身时,以防止其他混合使用premultiplied混合模式。
love.graphics.setBlendMode('premultiplied')
love.graphics.draw(canvas)
-- 展示Canvas使用了alpha混合模式的差异。
love.graphics.setBlendMode('alpha')
love.graphics.draw(canvas, 100, 0)
-- 矩形直接画到与Alpha混合模式的画面。
love.graphics.setBlendMode('alpha')
love.graphics.setColor(255, 0, 0, 128)
love.graphics.rectangle('fill', 200, 0, 100, 100)
end
参考
其他语言
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