//----------------------------------------------------------------------------// void OpenGLApplePBTextureTarget::clear() { enablePBuffer(); glDisable(GL_SCISSOR_TEST); glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_SCISSOR_TEST); disablePBuffer(); }
//----------------------------------------------------------------------------// void OpenGLApplePBTextureTarget::deactivate() { glFlush(); OpenGLRenderTarget::deactivate(); // Clear the blend mode again so the next setupRenderingBlendMode call // is forced to update states for the main / previous context. d_owner.setupRenderingBlendMode(BM_INVALID); disablePBuffer(); }
//----------------------------------------------------------------------------// void OpenGLGLXPBTextureTarget::deactivate() { // grab what we rendered into the texture glBindTexture(GL_TEXTURE_2D, d_texture); glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0, static_cast<GLsizei>(d_area.d_right), static_cast<GLsizei>(d_area.d_bottom), 0); disablePBuffer(); OpenGLRenderTarget::deactivate(); }
//----------------------------------------------------------------------------// void OpenGLWGLPBTextureTarget::deactivate() { // grab what we rendered into the texture glBindTexture(GL_TEXTURE_2D, d_texture); glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0, static_cast<GLsizei>(d_area.right()), static_cast<GLsizei>(d_area.bottom()), 0); disablePBuffer(); // Clear the blend mode again so the next setupRenderingBlendMode call // is forced to update states for the main / previous context. d_owner.setupRenderingBlendMode(BM_INVALID); OpenGLTextureTarget::deactivate(); }
//----------------------------------------------------------------------------// void OpenGLWGLPBTextureTarget::clear() { // save the old clear colour GLfloat old_colour[4]; glGetFloatv(GL_COLOR_CLEAR_VALUE, old_colour); // save old scissor state GLboolean old_scissor; glGetBooleanv(GL_SCISSOR_TEST, &old_scissor); enablePBuffer(); glDisable(GL_SCISSOR_TEST); glClearColor(0,0,0,0); glClear(GL_COLOR_BUFFER_BIT); disablePBuffer(); // restore old scissor state if (GL_TRUE == old_scissor) glEnable(GL_SCISSOR_TEST); // restore the old clear colour glClearColor(old_colour[0], old_colour[1], old_colour[2], old_colour[3]); }
//----------------------------------------------------------------------------// OpenGLGLXPBTextureTarget::OpenGLGLXPBTextureTarget(OpenGLRenderer& owner) : OpenGLTextureTarget(owner), d_pbuffer(0) { if (!GLXEW_VERSION_1_3) throw InvalidRequestException("System does not support GLX >= 1.3 " "required by CEGUI pbuffer usage under GLX"); d_dpy = glXGetCurrentDisplay(); selectFBConfig(); createContext(); initialiseTexture(); // set default size (and cause initialisation of the pbuffer) declareRenderSize(Size(DEFAULT_SIZE, DEFAULT_SIZE)); // set some states as a one-time thing (because we use a separate context) enablePBuffer(); glEnable(GL_SCISSOR_TEST); glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_SECONDARY_COLOR_ARRAY); glDisableClientState(GL_INDEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); glDisableClientState(GL_FOG_COORDINATE_ARRAY); glDisableClientState(GL_EDGE_FLAG_ARRAY); glClearColor(0,0,0,0); disablePBuffer(); }