/** * Verändert Auflösung, Fenster/Fullscreen * * @param[in] screenWidth neue Breite des Fensters * @param[in] screenHeight neue Höhe des Fensters * @param[in] fullscreen Vollbild oder nicht * * @return Bei Erfolg @p true ansonsten @p false */ bool VideoDriverWrapper::ResizeScreen(const unsigned short screenWidth, const unsigned short screenHeight, const bool fullscreen) { if(!videodriver) { s25Util::fatal_error("Kein Videotreiber ausgewaehlt!\n"); return false; } const bool result = videodriver->ResizeScreen(screenWidth, screenHeight, fullscreen); #ifdef _WIN32 if(!videodriver->IsFullscreen()) { // We cannot change the size of a maximized window. So restore it here WINDOWPLACEMENT wp; wp.length = sizeof(WINDOWPLACEMENT); if(GetWindowPlacement((HWND)GetMapPointer(), &wp) && ((wp.showCmd & SW_MAXIMIZE) == SW_MAXIMIZE)) ShowWindow((HWND)GetMapPointer(), SW_RESTORE); } #endif RenewViewport(); WINDOWMANAGER.Msg_ScreenResize(videodriver->GetScreenWidth(), videodriver->GetScreenHeight()); return result; }
bool VideoDriverWrapper::Initialize() { RenewViewport(); // Depthbuffer und Colorbuffer einstellen glClearColor(0.0, 0.0, 0.0, 0.5); // Smooth - Shading aktivieren glShadeModel(GL_SMOOTH); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.0f); // Alphablending an glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); // Depthbuffer abschalten glDisable(GL_DEPTH_TEST); glDepthMask(GL_FALSE); // Texturen anstellen glEnable(GL_TEXTURE_2D); // Dither abstellen glDisable(GL_DITHER); // Scissoring aktivieren glEnable(GL_SCISSOR_TEST); // Nur obere Seite von Dreiecke rendern --> Performance glEnable(GL_CULL_FACE); // Extensions laden if(!LoadAllExtensions()) return false; // Puffer leeren glClear(GL_COLOR_BUFFER_BIT); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); // Buffer swappen um den leeren Buffer darzustellen SwapBuffers(); return true; }
/** * Verändert Auflösung, Fenster/Fullscreen * * @param[in] screenWidth neue Breite des Fensters * @param[in] screenHeight neue Höhe des Fensters * @param[in] fullscreen Vollbild oder nicht * * @return Bei Erfolg @p true ansonsten @p false * * @author FloSoft */ bool VideoDriverWrapper::ResizeScreen(const unsigned short screenWidth, const unsigned short screenHeight, const bool fullscreen) { if(videodriver == NULL) { fatal_error("Kein Videotreiber ausgewaehlt!\n"); return false; } const bool result = videodriver->ResizeScreen(screenWidth, screenHeight, fullscreen); RenewViewport(); WindowManager::inst().Msg_ScreenResize(screenWidth, screenHeight); return result; }