Merge pull request #5596 from Mailaender/opengl-version

Fixed crash when OpenGL version parse fails
This commit is contained in:
Paul Chote
2014-06-15 21:45:32 +12:00

View File

@@ -16,20 +16,23 @@ namespace OpenRA.Renderer.Sdl2
{ {
public static class ErrorHandler public static class ErrorHandler
{ {
static Version OpenGLversion;
public static void CheckGlVersion() public static void CheckGlVersion()
{ {
var version = GL.GetString(StringName.Version).Split(' ')[0].Split('.'); var versionString = GL.GetString(StringName.Version);
int major; var version = versionString.Contains(" ") ? versionString.Split(' ')[0].Split('.') : versionString.Split('.');
int.TryParse(version[0], out major);
int minor; int major = 0;
int.TryParse(version[1], out minor); if (version.Length > 0)
int.TryParse(version[0], out major);
int minor = 0;
if (version.Length > 1)
int.TryParse(version[1], out minor);
Console.WriteLine("Detected OpenGL version: {0}.{1}".F(major, minor)); Console.WriteLine("Detected OpenGL version: {0}.{1}".F(major, minor));
OpenGLversion = new Version(major, minor);
if (major < 2) if (major < 2)
{ {
WriteGraphicsLog("OpenRA requires OpenGL version 2.0 or greater."); WriteGraphicsLog("OpenRA requires OpenGL version 2.0 or greater and detected {0}.{1}".F(major, minor));
throw new InvalidProgramException("OpenGL Version Error: See graphics.log for details."); throw new InvalidProgramException("OpenGL Version Error: See graphics.log for details.");
} }
} }
@@ -58,11 +61,6 @@ namespace OpenRA.Renderer.Sdl2
} }
Log.Write("graphics", "Renderer: {0}", GL.GetString(StringName.Renderer)); Log.Write("graphics", "Renderer: {0}", GL.GetString(StringName.Renderer));
Log.Write("graphics", "GL Version: {0}", GL.GetString(StringName.Version)); 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", "Shader Version: {0}", GL.GetString(StringName.ShadingLanguageVersion));
Log.Write("graphics", "Available extensions:"); Log.Write("graphics", "Available extensions:");
Log.Write("graphics", GL.GetString(StringName.Extensions)); Log.Write("graphics", GL.GetString(StringName.Extensions));