First-chance exception at 0x75b49617 in Postprocessing.exe: Microsoft C++ exception: long at memory location 0x0028f090.
bool COpenGLDriver::copyBackBufferTo(ITexture* dest) // To render target (which has a FB and texture)
{
GLenum error = 0;
error = glGetError(); // Clear any old error
//if (dest->getDriverType() != EDT_OPENGL)
// return false;
GLenum status = extGlCheckFramebufferStatus(GL_FRAMEBUFFER_EXT);
if ( status != GL_FRAMEBUFFER_COMPLETE )
goto returnFALSE;
#ifdef _DEBUG
static bool bDo = false;
if ( bDo )
{
glDisable(GL_BLEND);
error = glGetError();
if ( error != GL_NO_ERROR )
goto returnFALSE;
glDisable(GL_DEPTH_TEST);
error = glGetError();
if ( error != GL_NO_ERROR )
goto returnFALSE;
glDisable(GL_ALPHA_TEST);
error = glGetError();
if ( error != GL_NO_ERROR )
goto returnFALSE;
glDisable(GL_MULTISAMPLE_ARB);
error = glGetError();
if ( error != GL_NO_ERROR )
goto returnFALSE;
glDisable(GL_SAMPLE_ALPHA_TO_COVERAGE_ARB);
error = glGetError();
if ( error != GL_NO_ERROR )
goto returnFALSE;
// glEnable(GL_DEPTH_TEST);
// glDisable(GL_TEXTURE_2D);
}
#endif
GLint oldFBO = 0;
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &oldFBO);
error = glGetError();
COpenGLTexture* tex = (COpenGLTexture*)dest;
GLuint name = tex->getOpenGLTextureName();
core::dimension2du bSize = this->getScreenSize();
glReadBuffer(GL_BACK); // Moved to here else error, Robmar
error = glGetError();
extGlBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
error = glGetError();
extGlBindFramebuffer(GL_DRAW_FRAMEBUFFER, name);
error = glGetError();
extGlFramebufferTexture2D(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, name, 0); // Added this, Robmar
error = glGetError();
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
error = glGetError();
extGlBlitFramebuffer( 0, 0, bSize.Width, bSize.Height,
0, 0, bSize.Width, bSize.Height,
GL_COLOR_BUFFER_BIT, GL_NEAREST);
error = glGetError();
extGlBindFramebuffer(GL_FRAMEBUFFER, oldFBO);
error = glGetError();
return true;
returnFALSE:
return false;
}
Users browsing this forum: No registered users and 1 guest