Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
authorSam Lantinga <slouken@libsdl.org>
Sat, 22 Feb 2014 15:23:09 -0800
changeset 8233 ffece8ab18a6
parent 8232 8976fb30952f
child 8234 80c193c7c8c8
Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS Alex Szpakowski Currently the UIKit/EAGL backend for SDL's OpenGL context creation API doesn't support OpenGL ES 3, despite iOS 7+ being capable (on devices with the necessary hardware.) I have attached a patch to add support. It's also slightly more future-proof, so eventual OpenGL ES 4+ capability on iOS should hopefully work without requiring changes to SDL's UIKit/EAGL backend.
src/video/uikit/SDL_uikitopenglview.m
--- a/src/video/uikit/SDL_uikitopenglview.m	Sat Feb 22 14:57:12 2014 -0800
+++ b/src/video/uikit/SDL_uikitopenglview.m	Sat Feb 22 15:23:09 2014 -0800
@@ -56,6 +56,11 @@
         const BOOL useDepthBuffer = (depthBits != 0);
         NSString *colorFormat = nil;
 
+        /* The EAGLRenderingAPI enum values currently map 1:1 to major GLES
+           versions, and this allows us to handle future OpenGL ES versions.
+         */
+        EAGLRenderingAPI api = majorVersion;
+
         if (rBits == 8 && gBits == 8 && bBits == 8) {
             /* if user specifically requests rbg888 or some color format higher than 16bpp */
             colorFormat = kEAGLColorFormatRGBA8;
@@ -71,11 +76,7 @@
         eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
                                         [NSNumber numberWithBool: retained], kEAGLDrawablePropertyRetainedBacking, colorFormat, kEAGLDrawablePropertyColorFormat, nil];
 
-        if (majorVersion > 1) {
-            context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2 sharegroup:shareGroup];
-        } else {
-            context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1 sharegroup:shareGroup];
-        }
+        context = [[EAGLContext alloc] initWithAPI:api sharegroup:shareGroup];
         if (!context || ![EAGLContext setCurrentContext:context]) {
             [self release];
             SDL_SetError("OpenGL ES %d not supported", majorVersion);