Difference between revisions of "Canvas (简体中文)"

Line 2: Line 2:
 
Canvas用于离屏渲染。可以把它看成是一种无形的屏幕,你可以在上面绘制一些东西,但直到你将它设置为可见的之前,它都不会被看见不可见的。它也被称为“纹理渲染(render to texture)”。
 
Canvas用于离屏渲染。可以把它看成是一种无形的屏幕,你可以在上面绘制一些东西,但直到你将它设置为可见的之前,它都不会被看见不可见的。它也被称为“纹理渲染(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.
+
在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.

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

参考


其他语言