mirror of
https://github.com/love2d/love.git
synced 2026-08-17 11:00:31 +02:00
Fix issue #294: Canvas not working when not rendering to default render target.
This commit is contained in:
@@ -49,6 +49,27 @@ namespace opengl
|
||||
bool loadVolatile();
|
||||
void unloadVolatile();
|
||||
|
||||
/// Unbind the current canvas on construction and rebind it upon destruction.
|
||||
// Exception safe temporary unbinding/rebinding for techniques that require
|
||||
// the default canvas to work (e.g. stencils).
|
||||
// XXX: If a canvas is switched between creating and destroying an unbinder
|
||||
// object, the canvas will not be switched back.
|
||||
struct TemporaryUnbinder
|
||||
{
|
||||
Canvas * canvas;
|
||||
inline TemporaryUnbinder() : canvas(Canvas::current)
|
||||
{
|
||||
if (NULL != canvas)
|
||||
Canvas::bindDefaultCanvas();
|
||||
}
|
||||
|
||||
inline ~TemporaryUnbinder()
|
||||
{
|
||||
if (NULL != canvas && NULL == Canvas::current)
|
||||
canvas->startGrab();
|
||||
}
|
||||
};
|
||||
|
||||
private:
|
||||
friend class PixelEffect;
|
||||
GLuint getTextureName() const { return img; }
|
||||
|
||||
Reference in New Issue
Block a user