love.graphics.newFramebuffer

Available since LÖVE 0.7.0
It is not supported in earlier versions.
O.png Framebuffers are susceptible to Power of 2 syndrome on many computers with lower end graphics.  


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