mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2025-08-07 22:59:50 +00:00
Clean up framebuffer code a little
This commit is contained in:
parent
0db3c8242c
commit
90d70c117b
1 changed files with 53 additions and 61 deletions
|
@ -83,20 +83,10 @@ bool FrameBuffer::init(int width, int height, bool fitToScreen)
|
||||||
|
|
||||||
w=width;
|
w=width;
|
||||||
h=height;
|
h=height;
|
||||||
|
|
||||||
char *ext = (char*)glGetString( GL_EXTENSIONS );
|
|
||||||
|
|
||||||
std::ostringstream os;
|
std::ostringstream os;
|
||||||
os << "Loading EXT_framebuffer_object (" << w << ", " << h << ")";
|
os << "Loading EXT_framebuffer_object (" << w << ", " << h << ")";
|
||||||
debugLog(os.str());
|
debugLog(os.str());
|
||||||
|
|
||||||
if( strstr( ext, "EXT_framebuffer_object" ) == NULL )
|
|
||||||
{
|
|
||||||
debugLog("EXT_framebuffer_object extension was not found");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( !glIsRenderbufferEXT || !glBindRenderbufferEXT || !glDeleteRenderbuffersEXT ||
|
if( !glIsRenderbufferEXT || !glBindRenderbufferEXT || !glDeleteRenderbuffersEXT ||
|
||||||
!glGenRenderbuffersEXT || !glRenderbufferStorageEXT || !glGetRenderbufferParameterivEXT ||
|
!glGenRenderbuffersEXT || !glRenderbufferStorageEXT || !glGetRenderbufferParameterivEXT ||
|
||||||
!glIsFramebufferEXT || !glBindFramebufferEXT || !glDeleteFramebuffersEXT ||
|
!glIsFramebufferEXT || !glBindFramebufferEXT || !glDeleteFramebuffersEXT ||
|
||||||
|
@ -121,26 +111,6 @@ bool FrameBuffer::init(int width, int height, bool fitToScreen)
|
||||||
glBindRenderbufferEXT( GL_RENDERBUFFER_EXT, g_depthRenderBuffer );
|
glBindRenderbufferEXT( GL_RENDERBUFFER_EXT, g_depthRenderBuffer );
|
||||||
glRenderbufferStorageEXT( GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, width, height );
|
glRenderbufferStorageEXT( GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, width, height );
|
||||||
|
|
||||||
//
|
|
||||||
// Check for errors...
|
|
||||||
//
|
|
||||||
|
|
||||||
GLenum status = glCheckFramebufferStatusEXT( GL_FRAMEBUFFER_EXT );
|
|
||||||
|
|
||||||
switch( status )
|
|
||||||
{
|
|
||||||
case GL_FRAMEBUFFER_COMPLETE_EXT:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case GL_FRAMEBUFFER_UNSUPPORTED_EXT:
|
|
||||||
debugLog("GL_FRAMEBUFFER_UNSUPPORTED_EXT!");
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
glGenTextures( 1, &g_dynamicTextureID );
|
glGenTextures( 1, &g_dynamicTextureID );
|
||||||
|
|
||||||
|
@ -152,9 +122,34 @@ bool FrameBuffer::init(int width, int height, bool fitToScreen)
|
||||||
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB,
|
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB,
|
||||||
width, height,
|
width, height,
|
||||||
0, GL_BGR, GL_UNSIGNED_BYTE, 0 );
|
0, GL_BGR, GL_UNSIGNED_BYTE, 0 );
|
||||||
}
|
|
||||||
|
|
||||||
|
// Put together
|
||||||
|
|
||||||
|
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, g_frameBuffer );
|
||||||
|
glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, g_dynamicTextureID, 0 );
|
||||||
|
glFramebufferRenderbufferEXT( GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, g_depthRenderBuffer );
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check for errors...
|
||||||
|
//
|
||||||
|
|
||||||
|
GLenum status = glCheckFramebufferStatusEXT( GL_FRAMEBUFFER_EXT );
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, 0);
|
glBindTexture(GL_TEXTURE_2D, 0);
|
||||||
|
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
|
||||||
|
|
||||||
|
switch( status )
|
||||||
|
{
|
||||||
|
case GL_FRAMEBUFFER_COMPLETE_EXT:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GL_FRAMEBUFFER_UNSUPPORTED_EXT:
|
||||||
|
debugLog("GL_FRAMEBUFFER_UNSUPPORTED_EXT!");
|
||||||
|
default:
|
||||||
|
unloadDevice();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
debugLog("Done");
|
debugLog("Done");
|
||||||
inited = true;
|
inited = true;
|
||||||
|
@ -168,7 +163,8 @@ bool FrameBuffer::init(int width, int height, bool fitToScreen)
|
||||||
void FrameBuffer::unloadDevice()
|
void FrameBuffer::unloadDevice()
|
||||||
{
|
{
|
||||||
debugLog("frameBuffer::unloadDevice");
|
debugLog("frameBuffer::unloadDevice");
|
||||||
|
inited = false;
|
||||||
|
enabled = false;
|
||||||
|
|
||||||
#ifdef BBGE_BUILD_FRAMEBUFFER
|
#ifdef BBGE_BUILD_FRAMEBUFFER
|
||||||
|
|
||||||
|
@ -226,12 +222,8 @@ void FrameBuffer::startCapture()
|
||||||
|
|
||||||
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, g_frameBuffer );
|
glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, g_frameBuffer );
|
||||||
|
|
||||||
glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, g_dynamicTextureID, 0 );
|
|
||||||
glFramebufferRenderbufferEXT( GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, g_depthRenderBuffer );
|
|
||||||
|
|
||||||
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
|
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue