Difference between revisions of "love.graphics.newFramebuffer"

m (width spelled incorretly)
(Add canvas emulation example)
Line 25: Line 25:
 
=== Notes ===
 
=== Notes ===
 
Specifying a size different from the window size will not resize the canvas but the resulting image itself. To resize the canvas you have to use [[love.graphics.scale]].
 
Specifying a size different from the window size will not resize the canvas but the resulting image itself. To resize the canvas you have to use [[love.graphics.scale]].
 +
 +
== Notes ==
 +
It is tempting to think of a Framebuffer as a canvas. And though you can create one that is larger or smaller than the screen, it does not act like one, meaning you cannot draw things that lie outside of the window dimensions. Instead all content drawn to the buffer will be scaled according to framebuffer_width/screen_width in x-direction and framebuffer_height/screen_height in y-direction.
 +
 +
You can emulate a canvas by using [[love.graphics.scale]] before drawing to the buffer:
 +
<source lang="lua">
 +
function love.load()
 +
    framebuffer = love.graphics.newFramebuffer(FB_WIDTH, FB_HEIGHT)
 +
    -- more stuff
 +
end
 +
 +
function love.draw()
 +
    love.graphics.setRenderTarget(framebuffer)
 +
    love.graphics.push()
 +
    love.graphics.scale(love.graphics.getWidth()/FB_WIDTH, love.graphics.getHeight()/FB_HEIGHT)
 +
    -- draw things like drawing to a canvas
 +
    love.graphics.pop()
 +
    love.graphics.setRenderTarget(framebuffer)
 +
    -- present the framebuffer
 +
    love.graphics.draw(framebuffer, 0,0)
 +
end
 +
</source>
  
 
== See Also ==
 
== See Also ==

Revision as of 14:02, 17 November 2010

Available since LÖVE 0.7.0
It is not supported in earlier versions.


Creates a new framebuffer object for offscreen rendering.

Function

Synopsis

framebuffer = love.graphics.newFramebuffer( )

Arguments

None.

Returns

Framebuffer framebuffer
A new framebuffer with width/height equal to the window width/height.

Function

Synopsis

framebuffer = love.graphics.newFramebuffer( width, height )

Arguments

number width
The desired width of the framebuffer.
number height
The desired height of the framebuffer.

Returns

Framebuffer framebuffer
A new framebuffer with specified width and height.

Notes

Specifying a size different from the window size will not resize the canvas but the resulting image itself. To resize the canvas you have to use love.graphics.scale.

Notes

It is tempting to think of a Framebuffer as a canvas. And though you can create one that is larger or smaller than the screen, it does not act like one, meaning you cannot draw things that lie outside of the window dimensions. Instead all content drawn to the buffer will be scaled according to framebuffer_width/screen_width in x-direction and framebuffer_height/screen_height in y-direction.

You can emulate a canvas by using love.graphics.scale before drawing to the buffer:

function love.load()
    framebuffer = love.graphics.newFramebuffer(FB_WIDTH, FB_HEIGHT)
    -- more stuff
end

function love.draw()
    love.graphics.setRenderTarget(framebuffer)
    love.graphics.push()
    love.graphics.scale(love.graphics.getWidth()/FB_WIDTH, love.graphics.getHeight()/FB_HEIGHT)
    -- draw things like drawing to a canvas
    love.graphics.pop()
    love.graphics.setRenderTarget(framebuffer)
    -- present the framebuffer
    love.graphics.draw(framebuffer, 0,0)
end

See Also