void SurfaceSdlGraphicsManager::updateScreen() {
#ifdef USE_OPENGL
    if (_opengl) {
        if (_frameBuffer) {
            _frameBuffer->detach();
            glViewport(0, 0, _screen->w, _screen->h);
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
#ifndef USE_OPENGL_SHADERS
            drawFramebufferOpenGL();
#else
            drawFramebufferOpenGLShaders();
#endif
        }

        if (_overlayVisible) {
            if (_overlayDirty) {
                updateOverlayTextures();
            }

#ifndef USE_OPENGL_SHADERS
            drawOverlayOpenGL();
#else
            drawOverlayOpenGLShaders();
#endif
        }

        SDL_GL_SwapBuffers();

        if (_frameBuffer) {
            _frameBuffer->attach();
        }
    } else
#endif
    {
        SDL_Rect dstrect;
        dstrect.x = _gameRect.getTopLeft().getX();
        dstrect.y = _gameRect.getTopLeft().getY();
        dstrect.w = _gameRect.getWidth();
        dstrect.h = _gameRect.getHeight();
        SDL_BlitSurface(_subScreen, NULL, _screen, &dstrect);
        if (_overlayVisible) {
            drawOverlay();
        }
        SDL_Flip(_screen);
    }
}
void SurfaceSdlGraphicsManager::updateScreen() {
#ifdef USE_OPENGL
	if (_opengl) {
		if (_overlayVisible) {
			if (_overlayDirty) {
				updateOverlayTextures();
			}

#ifndef USE_OPENGL_SHADERS
			drawOverlayOpenGL();
#else
			drawOverlayOpenGLShaders();
#endif
		}
		SDL_GL_SwapBuffers();
	} else
#endif
	{
		if (_overlayVisible) {
			drawOverlay();
		}
		SDL_Flip(_screen);
	}
}