Canvas (简体中文)

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.

O.png 有些很老的显卡不支持Canvas,如果你试图使用它们将抛出一个错误。在运行时使用 love.graphics.isSupported("canvas") 来检查是否支持。  


构造函数

love.graphics.newCanvas Creates a new Canvas. Added since 0.8.0

函数

Canvas:clear Clears the contents of a Canvas to a specific color. Added since 0.8.0 Removed in 0.10.0
Canvas:generateMipmaps Generates mipmaps for the Canvas, based on the contents of the highest-resolution mipmap level. Added since 11.0
Canvas:getFSAA Gets the number of FSAA samples used when drawing to the Canvas. Added since 0.9.1 Removed in 0.10.0
Canvas:getFormat Gets the texture format of the Canvas. Added since 0.9.1 Removed in 11.0
Canvas:getImageData Generates ImageData from the contents of the Canvas. Added since 0.8.0 Removed in 0.10.0
Canvas:getMSAA Gets the number of MSAA samples used when drawing to the Canvas. Added since 0.9.2
Canvas:getMipmapMode Gets the MipmapMode this Canvas was created with. Added since 11.0
Canvas:getPixel Gets the pixel at the specified position in a Canvas. Added since 0.9.0 Removed in 0.10.0
Canvas:newImageData Generates ImageData from the contents of the Canvas. Added since 0.10.0
Canvas:renderTo Render to a Canvas using a function. Added since 0.8.0
Object:release Immediately destroys the object's Lua reference. Added since 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

参考


其他语言