//----------------------------------------------------------------------------// OpenGLWGLPBTextureTarget::OpenGLWGLPBTextureTarget(OpenGLRendererBase& owner) : OpenGLTextureTarget(owner), d_pixfmt(0), d_pbuffer(0), d_context(0), d_hdc(0), d_prevContext(0), d_prevDC(0) { if (!WGLEW_ARB_pbuffer) CEGUI_THROW(RendererException("WGL_ARB_pbuffer extension is needed to " "use OpenGLWGLPBTextureTarget!")); HDC hdc = wglGetCurrentDC(); uint fmtcnt; wglChoosePixelFormatARB(hdc, pbAttrs, 0, 1, &d_pixfmt, &fmtcnt); if (!fmtcnt) CEGUI_THROW(RendererException( "pbuff creation failure, no suitable pixel formats.")); initialiseTexture(); // set default size (and cause initialisation of the pbuffer) declareRenderSize(Sizef(DEFAULT_SIZE, DEFAULT_SIZE)); }
//----------------------------------------------------------------------------// void OpenGLApplePBTextureTarget::restoreTexture() { const Size sz(d_area.getSize()); d_area.setSize(Size(0.0f, 0.0f)); OpenGLTextureTarget::restoreTexture(); initialiseTexture(); declareRenderSize(sz); }
//----------------------------------------------------------------------------// 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(); }
//----------------------------------------------------------------------------// void OpenGLGLXPBTextureTarget::restoreTexture() { OpenGLTextureTarget::restoreTexture(); initialiseTexture(); initialisePBuffer(); }