From a4d2a31386b701436fdd9b2806ed8e9c7dd6d1c4 Mon Sep 17 00:00:00 2001 From: thefiddler <stapostol@gmail.com> Date: Thu, 9 Jan 2014 23:36:28 +0100 Subject: [PATCH] [Mac] OpenGL 3.x/4.x require core profile flag SDL will fail to construct an OpenGL 3.x/4.x context on Mac OS X, unless ContextProfileFlags.CORE is specified. Fixes issue #44 Upstream enhancement request at https://bugzilla.libsdl.org/show_bug.cgi?id=2342 --- Source/OpenTK/Platform/SDL2/Sdl2GraphicsContext.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Source/OpenTK/Platform/SDL2/Sdl2GraphicsContext.cs b/Source/OpenTK/Platform/SDL2/Sdl2GraphicsContext.cs index a34019f9..c7714b58 100644 --- a/Source/OpenTK/Platform/SDL2/Sdl2GraphicsContext.cs +++ b/Source/OpenTK/Platform/SDL2/Sdl2GraphicsContext.cs @@ -157,6 +157,8 @@ namespace OpenTK.Platform.SDL2 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 @@ namespace OpenTK.Platform.SDL2 { 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 @@ namespace OpenTK.Platform.SDL2 */ { - ContextProfileFlags cpflags = 0; if ((flags & GraphicsContextFlags.Embedded) != 0) { cpflags |= ContextProfileFlags.ES;