mirror of
https://github.com/love2d/love.git
synced 2026-08-16 00:02:12 +02:00
made Framebuffer Volatile and fixed a few bugs
This commit is contained in:
@@ -99,9 +99,9 @@ namespace {
|
||||
}
|
||||
virtual void deleteFBO(GLuint framebuffer, GLuint depthbuffer, GLuint img)
|
||||
{
|
||||
glDeleteTextures(1, &framebuffer);
|
||||
glDeleteTextures(1, &img);
|
||||
glDeleteRenderbuffers(1, &depthbuffer);
|
||||
glDeleteFramebuffers(1, &img);
|
||||
glDeleteFramebuffers(1, &framebuffer);
|
||||
}
|
||||
|
||||
virtual void bindFBO(GLuint framebuffer)
|
||||
@@ -117,7 +117,7 @@ namespace {
|
||||
{
|
||||
// generate depth buffer
|
||||
glGenRenderbuffersEXT(1, &depthbuffer);
|
||||
glBindRenderbuffer(GL_RENDERBUFFER_EXT, depthbuffer);
|
||||
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthbuffer);
|
||||
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT16, width, height);
|
||||
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
|
||||
|
||||
@@ -146,9 +146,9 @@ namespace {
|
||||
|
||||
virtual void deleteFBO(GLuint framebuffer, GLuint depthbuffer, GLuint img)
|
||||
{
|
||||
glDeleteTextures(1, &framebuffer);
|
||||
glDeleteTextures(1, &img);
|
||||
glDeleteRenderbuffersEXT(1, &depthbuffer);
|
||||
glDeleteFramebuffersEXT(1, &img);
|
||||
glDeleteFramebuffersEXT(1, &framebuffer);
|
||||
}
|
||||
|
||||
virtual void bindFBO(GLuint framebuffer)
|
||||
@@ -205,7 +205,7 @@ namespace opengl
|
||||
|
||||
}
|
||||
|
||||
status = strategy->createFBO(fbo, depthbuffer, img, width, height);
|
||||
loadVolatile();
|
||||
}
|
||||
|
||||
Framebuffer::~Framebuffer()
|
||||
@@ -214,7 +214,7 @@ namespace opengl
|
||||
if (current == this)
|
||||
stopGrab();
|
||||
|
||||
strategy->deleteFBO(fbo, depthbuffer, img);
|
||||
unloadVolatile();
|
||||
}
|
||||
|
||||
void Framebuffer::bindDefaultBuffer()
|
||||
@@ -307,6 +307,17 @@ namespace opengl
|
||||
|
||||
return img;
|
||||
}
|
||||
|
||||
bool Framebuffer::loadVolatile()
|
||||
{
|
||||
status = strategy->createFBO(fbo, depthbuffer, img, width, height);
|
||||
return (status == GL_FRAMEBUFFER_COMPLETE);
|
||||
}
|
||||
|
||||
void Framebuffer::unloadVolatile()
|
||||
{
|
||||
strategy->deleteFBO(fbo, depthbuffer, img);
|
||||
}
|
||||
|
||||
} // opengl
|
||||
} // graphics
|
||||
|
||||
Reference in New Issue
Block a user