mirror of https://github.com/encounter/SDL.git
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.
This commit is contained in:
parent
af0ab49003
commit
f7de4ae130
|
@ -56,6 +56,11 @@
|
||||||
const BOOL useDepthBuffer = (depthBits != 0);
|
const BOOL useDepthBuffer = (depthBits != 0);
|
||||||
NSString *colorFormat = nil;
|
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 (rBits == 8 && gBits == 8 && bBits == 8) {
|
||||||
/* if user specifically requests rbg888 or some color format higher than 16bpp */
|
/* if user specifically requests rbg888 or some color format higher than 16bpp */
|
||||||
colorFormat = kEAGLColorFormatRGBA8;
|
colorFormat = kEAGLColorFormatRGBA8;
|
||||||
|
@ -71,11 +76,7 @@
|
||||||
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
|
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
|
||||||
[NSNumber numberWithBool: retained], kEAGLDrawablePropertyRetainedBacking, colorFormat, kEAGLDrawablePropertyColorFormat, nil];
|
[NSNumber numberWithBool: retained], kEAGLDrawablePropertyRetainedBacking, colorFormat, kEAGLDrawablePropertyColorFormat, nil];
|
||||||
|
|
||||||
if (majorVersion > 1) {
|
context = [[EAGLContext alloc] initWithAPI:api sharegroup:shareGroup];
|
||||||
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2 sharegroup:shareGroup];
|
|
||||||
} else {
|
|
||||||
context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1 sharegroup:shareGroup];
|
|
||||||
}
|
|
||||||
if (!context || ![EAGLContext setCurrentContext:context]) {
|
if (!context || ![EAGLContext setCurrentContext:context]) {
|
||||||
[self release];
|
[self release];
|
||||||
SDL_SetError("OpenGL ES %d not supported", majorVersion);
|
SDL_SetError("OpenGL ES %d not supported", majorVersion);
|
||||||
|
|
Loading…
Reference in New Issue