Difference between revisions of "Canvas (简体中文)"
Line 2: | Line 2: | ||
Canvas用于离屏渲染。可以把它看成是一种无形的屏幕,你可以在上面绘制一些东西,但直到你将它设置为可见的之前,它都不会被看见不可见的。它也被称为“纹理渲染(render to texture)”。 | Canvas用于离屏渲染。可以把它看成是一种无形的屏幕,你可以在上面绘制一些东西,但直到你将它设置为可见的之前,它都不会被看见不可见的。它也被称为“纹理渲染(render to texture)”。 | ||
− | + | 在Canvas上绘制一些不经常改变的东西(如背景图案),然后再把Canvas绘制绘制出来来取代每个东西都独自绘制, 可以减少画面每帧拉伸操作的次数。 | |
Canvases can be susceptible to [[PO2_Syndrome| 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|love.graphics.isSupported("npot")]] if it is supported. | Canvases can be susceptible to [[PO2_Syndrome| 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|love.graphics.isSupported("npot")]] if it is supported. |
Revision as of 06:03, 3 January 2015
Available since LÖVE 0.8.0 |
由Framebuffer重命名而来. |
Canvas用于离屏渲染。可以把它看成是一种无形的屏幕,你可以在上面绘制一些东西,但直到你将它设置为可见的之前,它都不会被看见不可见的。它也被称为“纹理渲染(render to texture)”。
在Canvas上绘制一些不经常改变的东西(如背景图案),然后再把Canvas绘制绘制出来来取代每个东西都独自绘制, 可以减少画面每帧拉伸操作的次数。
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