static int GL_ActivateRenderer(SDL_Renderer * renderer) { GL_RenderData *data = (GL_RenderData *) renderer->driverdata; if (SDL_CurrentContext != data->context) { if (SDL_GL_MakeCurrent(renderer->window, data->context) < 0) { return -1; } SDL_CurrentContext = data->context; GL_UpdateViewport(renderer); } return 0; }
/* This is called if we need to invalidate all of the SDL OpenGL state */ static void GL_ResetState(SDL_Renderer *renderer) { GL_RenderData *data = (GL_RenderData *) renderer->driverdata; if (SDL_CurrentContext == data->context) { GL_UpdateViewport(renderer); } else { GL_ActivateRenderer(renderer); } data->current.shader = SHADER_NONE; data->current.color = 0; data->current.blendMode = -1; data->glDisable(GL_DEPTH_TEST); data->glDisable(GL_CULL_FACE); /* This ended up causing video discrepancies between OpenGL and Direct3D */ /*data->glEnable(GL_LINE_SMOOTH);*/ data->glMatrixMode(GL_MODELVIEW); data->glLoadIdentity(); }