void LogoutEffect::paintScreen(int mask, QRegion region, ScreenPaintData& data) { effects->paintScreen(mask, region, data); if (effects->compositingType() == KWin::OpenGLCompositing && progress > 0.0) { if (!blurSupported) { if (!logoutWindowPassed) // The logout window has been deleted but we still want to fade out the vignetting, thus // render it on the top of everything if still animating. We don't check if logoutWindow // is set as it may still be even if it wasn't rendered. renderVignetting(); } else { GLRenderTarget::pushRenderTarget(blurTarget); blurTarget->blitFromFramebuffer(); GLRenderTarget::popRenderTarget(); //-------------------------- // Render the screen effect renderBlurTexture(); // Vignetting (Radial gradient with transparent middle and black edges) renderVignetting(); //-------------------------- // Render the logout window if (logoutWindow) { int winMask = logoutWindow->hasAlpha() ? PAINT_WINDOW_TRANSLUCENT : PAINT_WINDOW_OPAQUE; WindowPaintData winData(logoutWindow); winData.setOpacity(windowOpacity); effects->drawWindow(logoutWindow, winMask, region, winData); } // Render all windows on top of logout window foreach (EffectWindow * w, windows) { int winMask = w->hasAlpha() ? PAINT_WINDOW_TRANSLUCENT : PAINT_WINDOW_OPAQUE; WindowPaintData winData(w); winData.setOpacity(windowsOpacities[ w ]); effects->drawWindow(w, winMask, region, winData); } windows.clear(); windowsOpacities.clear(); } }
int _tmain(int argc, _TCHAR* argv[]) { //Initialize a window data struct. BratsGLUtilities::WindowData winData("Bezier Triangle Interpolation"); //Initialize glut and create a window. initWindow(argc, argv, winData); //Report the OpenGL version std::cout << "INFO: OpenGL Version - " << glGetString(GL_VERSION) << std::endl; //Start the GLUT event loop. glutMainLoop(); return 0; }
int main(int argc,char** argv) { WindowManager *pWinManager = KaMiWindowManager::Instance(argc,argv); WindowData winData("KaMiWindow",500,500,GLUT_SINGLE|GLUT_RGB |GLUT_DEPTH,GePoint2D(0.0,0.0)); winData.winName = "KamiWindow"; GeWindow *pWin = pWinManager->createWindow(winData); pWin->setRender(new KaMiRender); pWin->setBlankgroundColor(0.0,1.0,0.0); pWin->moveTo(GePoint2D(200,200)); glClearColor(0.0, 0.0, 0.0, 1.0); pWin->show(); }
void LogoutEffect::paintScreen( int mask, QRegion region, ScreenPaintData& data ) { effects->paintScreen( mask, region, data ); #ifdef KWIN_HAVE_OPENGL_COMPOSITING if( blurSupported && progress > 0.0 ) { assert( effects->popRenderTarget() == blurTarget ); // Render the blurred scene blurTexture->bind(); GLfloat bias[1]; glGetTexEnvfv( GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, bias ); glTexEnvf( GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, progress * 2.75 ); glBegin( GL_QUADS ); glTexCoord2f( 0.0, 0.0 ); glVertex2f( 0.0, displayHeight() ); glTexCoord2f( 1.0, 0.0 ); glVertex2f( displayWidth(), displayHeight() ); glTexCoord2f( 1.0, 1.0 ); glVertex2f( displayWidth(), 0.0 ); glTexCoord2f( 0.0, 1.0 ); glVertex2f( 0.0, 0.0 ); glEnd(); glTexEnvf( GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, bias[0] ); blurTexture->unbind(); // Render the logout window if( logoutWindow ) { int winMask = logoutWindow->hasAlpha() ? PAINT_WINDOW_TRANSLUCENT : PAINT_WINDOW_OPAQUE; WindowPaintData winData( logoutWindow ); winData.opacity = windowOpacity; effects->drawWindow( logoutWindow, winMask, region, winData ); } } #endif }