Esempio n. 1
0
/**
 *  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;
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
/**
 *  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;
}