diff --git a/Source/OpenTK/Platform/SDL2/Sdl2GraphicsContext.cs b/Source/OpenTK/Platform/SDL2/Sdl2GraphicsContext.cs index a34019f9c8..c7714b58e6 100644 --- a/Source/OpenTK/Platform/SDL2/Sdl2GraphicsContext.cs +++ b/Source/OpenTK/Platform/SDL2/Sdl2GraphicsContext.cs @@ -157,6 +157,8 @@ static GraphicsMode GetGLAttributes(ContextHandle sdlContext, out GraphicsContex int major, int minor, GraphicsContextFlags flags) { + ContextProfileFlags cpflags = 0; + if (mode.AccumulatorFormat.BitsPerPixel > 0) { SDL.GL.SetAttribute(ContextAttribute.ACCUM_ALPHA_SIZE, mode.AccumulatorFormat.Alpha); @@ -203,6 +205,15 @@ static GraphicsMode GetGLAttributes(ContextHandle sdlContext, out GraphicsContex { SDL.GL.SetAttribute(ContextAttribute.CONTEXT_MAJOR_VERSION, major); SDL.GL.SetAttribute(ContextAttribute.CONTEXT_MINOR_VERSION, minor); + + // Workaround for https://github.com/opentk/opentk/issues/44 + // Mac OS X desktop OpenGL 3.x/4.x contexts require require + // ContextProfileFlags.Core, otherwise they will fail to construct. + if (Configuration.RunningOnMacOS && major >= 3 && + (flags & GraphicsContextFlags.Embedded) == 0) + { + cpflags |= ContextProfileFlags.CORE; + } } if ((flags & GraphicsContextFlags.Debug) != 0) @@ -223,7 +234,6 @@ static GraphicsMode GetGLAttributes(ContextHandle sdlContext, out GraphicsContex */ { - ContextProfileFlags cpflags = 0; if ((flags & GraphicsContextFlags.Embedded) != 0) { cpflags |= ContextProfileFlags.ES;