diff --git a/OpenRA.Renderer.Sdl2/ErrorHandler.cs b/OpenRA.Renderer.Sdl2/ErrorHandler.cs index c864bf260c..21988fda46 100644 --- a/OpenRA.Renderer.Sdl2/ErrorHandler.cs +++ b/OpenRA.Renderer.Sdl2/ErrorHandler.cs @@ -16,6 +16,24 @@ namespace OpenRA.Renderer.Sdl2 { public static class ErrorHandler { + static Version OpenGLversion; + + public static void CheckGlVersion() + { + var version = GL.GetString(StringName.Version).Split(' ')[0].Split('.'); + int major; + int.TryParse(version[0], out major); + int minor; + int.TryParse(version[1], out minor); + Console.WriteLine("Detected OpenGL version: {0}.{1}".F(major, minor)); + OpenGLversion = new Version(major, minor); + if (major < 2) + { + WriteGraphicsLog("OpenRA requires OpenGL version 2.0 or greater."); + throw new InvalidProgramException("OpenGL Version Error: See graphics.log for details."); + } + } + public static void CheckGlError() { var n = GL.GetError(); @@ -40,6 +58,11 @@ namespace OpenRA.Renderer.Sdl2 } Log.Write("graphics", "Renderer: {0}", GL.GetString(StringName.Renderer)); Log.Write("graphics", "GL Version: {0}", GL.GetString(StringName.Version)); + if (OpenGLversion.Major < 2) + { + Log.Write("graphics", "Note: OpenRA requires OpenGL version 2.0+.\n" + +"Please update your graphics card drivers to the latest version.\n"); + } Log.Write("graphics", "Shader Version: {0}", GL.GetString(StringName.ShadingLanguageVersion)); Log.Write("graphics", "Available extensions:"); Log.Write("graphics", GL.GetString(StringName.Extensions)); diff --git a/OpenRA.Renderer.Sdl2/Sdl2GraphicsDevice.cs b/OpenRA.Renderer.Sdl2/Sdl2GraphicsDevice.cs index cf5dadc280..0da24f9c84 100755 --- a/OpenRA.Renderer.Sdl2/Sdl2GraphicsDevice.cs +++ b/OpenRA.Renderer.Sdl2/Sdl2GraphicsDevice.cs @@ -79,6 +79,7 @@ namespace OpenRA.Renderer.Sdl2 context = SDL.SDL_GL_CreateContext(window); SDL.SDL_GL_MakeCurrent(window, context); GL.LoadAll(); + ErrorHandler.CheckGlVersion(); ErrorHandler.CheckGlError(); if (SDL.SDL_GL_ExtensionSupported("GL_EXT_framebuffer_object") == SDL.SDL_bool.SDL_FALSE)