made Framebuffer Volatile and fixed a few bugs

This commit is contained in:
Bill Meltsner
2010-08-28 13:02:28 -05:00
parent ee3b74e66d
commit 769842ce6e
2 changed files with 23 additions and 8 deletions
+18 -7
View File
@@ -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