private GLVersion GetMaximumSupportedProfile() { var window = ((AndroidWindow)this.WindowInfo); var mode = new AndroidGraphicsMode(window.Display, (int)this.ContextRenderingApi, new GraphicsMode(32, 0, 0)); using (var context = new AndroidGraphicsContext(mode, window, this.GraphicsContext, GLVersion.ES2, GraphicsContextFlags.Embedded)) { mode.Initialize(window.Display, (int)this.ContextRenderingApi); window.CreateSurface(mode.Config); context.MakeCurrent(window); int versionMajor, versionMinor; if (!OpenGLUtils.GetCurrentGLVersion(out versionMajor, out versionMinor)) { versionMajor = 2; versionMinor = 0; } context.MakeCurrent(null); window.DestroySurface(); if (versionMajor == 3) { return (versionMinor >= 1) ? GLVersion.ES31 : GLVersion.ES3; } return GLVersion.ES2; } }
private GraphicsProfile GetMaximumSupportedProfile() { var profile = GraphicsProfile.Level_9_1; var window = ((AndroidWindow)this.WindowInfo); var mode = new AndroidGraphicsMode(window.Display, (int)this.ContextRenderingApi, new GraphicsMode(32, 0, 0)); using (var context = new AndroidGraphicsContext(mode, window, this.GraphicsContext, GLVersion.ES2, GraphicsContextFlags.Embedded)) { mode.Initialize(window.Display, (int)this.ContextRenderingApi); window.CreateSurface(mode.Config); context.MakeCurrent(window); var versionVendorText = GL.GetString(StringName.Version); var match = MatchOpenGLVersion.Match(versionVendorText); if (match.Success) { var versionText = match.Groups[1].Value; if (versionText.StartsWith("2")) { profile = GraphicsProfile.Level_9_1; } else if (versionText.StartsWith("3.1")) { profile = GraphicsProfile.Level_10_0; } else if (versionText.StartsWith("3")) { profile = GraphicsProfile.Level_10_0; } } context.MakeCurrent(null); window.DestroySurface(); } return profile; }