src/video/uikit/SDL_uikitopenglview.m
author Alex Szpakowski <slime73@gmail.com>
Tue, 22 Jul 2014 20:06:13 -0300
branchiOS-improvements
changeset 9498 d02c27e3f698
parent 9496 abc8df8ce987
child 9499 6fe9b44b2d84
permissions -rw-r--r--
Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     1
/*
5535
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
     2
  Simple DirectMedia Layer
8149
681eb46b8ac4 Fixed bug 2374 - Update copyright for 2014...
Sam Lantinga <slouken@libsdl.org>
parents: 8093
diff changeset
     3
  Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
5262
b530ef003506 Happy 2011! :)
Sam Lantinga <slouken@libsdl.org>
parents: 5209
diff changeset
     4
5535
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
     5
  This software is provided 'as-is', without any express or implied
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
     6
  warranty.  In no event will the authors be held liable for any damages
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
     7
  arising from the use of this software.
5262
b530ef003506 Happy 2011! :)
Sam Lantinga <slouken@libsdl.org>
parents: 5209
diff changeset
     8
5535
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
     9
  Permission is granted to anyone to use this software for any purpose,
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
    10
  including commercial applications, and to alter it and redistribute it
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
    11
  freely, subject to the following restrictions:
5262
b530ef003506 Happy 2011! :)
Sam Lantinga <slouken@libsdl.org>
parents: 5209
diff changeset
    12
5535
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
    13
  1. The origin of this software must not be misrepresented; you must not
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
    14
     claim that you wrote the original software. If you use this software
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
    15
     in a product, an acknowledgment in the product documentation would be
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
    16
     appreciated but is not required.
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
    17
  2. Altered source versions must be plainly marked as such, and must not be
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
    18
     misrepresented as being the original software.
96594ac5fd1a SDL 1.3 is now under the zlib license.
Sam Lantinga <slouken@libsdl.org>
parents: 5527
diff changeset
    19
  3. This notice may not be removed or altered from any source distribution.
5262
b530ef003506 Happy 2011! :)
Sam Lantinga <slouken@libsdl.org>
parents: 5209
diff changeset
    20
*/
8093
b43765095a6f Make internal SDL sources include SDL_internal.h instead of SDL_config.h
Ryan C. Gordon <icculus@icculus.org>
parents: 7784
diff changeset
    21
#include "../../SDL_internal.h"
6044
35448a5ea044 Lots of fixes importing SDL source wholesale into a new iOS project
Sam Lantinga <slouken@libsdl.org>
parents: 6022
diff changeset
    22
35448a5ea044 Lots of fixes importing SDL source wholesale into a new iOS project
Sam Lantinga <slouken@libsdl.org>
parents: 6022
diff changeset
    23
#if SDL_VIDEO_DRIVER_UIKIT
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    24
6686
45014250760c Don't run the game loop while a messagebox is up
Sam Lantinga <slouken@libsdl.org>
parents: 6435
diff changeset
    25
#include <QuartzCore/QuartzCore.h>
45014250760c Don't run the game loop while a messagebox is up
Sam Lantinga <slouken@libsdl.org>
parents: 6435
diff changeset
    26
#include <OpenGLES/EAGLDrawable.h>
45014250760c Don't run the game loop while a messagebox is up
Sam Lantinga <slouken@libsdl.org>
parents: 6435
diff changeset
    27
#include "SDL_uikitopenglview.h"
45014250760c Don't run the game loop while a messagebox is up
Sam Lantinga <slouken@libsdl.org>
parents: 6435
diff changeset
    28
#include "SDL_uikitmessagebox.h"
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    29
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    30
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    31
@implementation SDL_uikitopenglview
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    32
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    33
@synthesize context;
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    34
9488
f15520430c94 Changed the way retina resolutions are handled in iOS.
Alex Szpakowski <slime73@gmail.com>
parents: 8891
diff changeset
    35
@synthesize backingWidth = backingWidth;
f15520430c94 Changed the way retina resolutions are handled in iOS.
Alex Szpakowski <slime73@gmail.com>
parents: 8891
diff changeset
    36
@synthesize backingHeight = backingHeight;
f15520430c94 Changed the way retina resolutions are handled in iOS.
Alex Szpakowski <slime73@gmail.com>
parents: 8891
diff changeset
    37
6003
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
    38
+ (Class)layerClass
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
    39
{
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    40
    return [CAEAGLLayer class];
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    41
}
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    42
6003
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
    43
- (id)initWithFrame:(CGRect)frame
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    44
              scale:(CGFloat)scale
6003
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
    45
      retainBacking:(BOOL)retained
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    46
              rBits:(int)rBits
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    47
              gBits:(int)gBits
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    48
              bBits:(int)bBits
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    49
              aBits:(int)aBits
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    50
          depthBits:(int)depthBits
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    51
        stencilBits:(int)stencilBits
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    52
               sRGB:(BOOL)sRGB
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    53
       majorVersion:(int)majorVersion
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    54
         shareGroup:(EAGLSharegroup*)shareGroup
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    55
{
5527
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
    56
    depthBufferFormat = 0;
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
    57
6022
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
    58
    if ((self = [super initWithFrame:frame])) {
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
    59
        const BOOL useStencilBuffer = (stencilBits != 0);
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
    60
        const BOOL useDepthBuffer = (depthBits != 0);
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
    61
        NSString *colorFormat = nil;
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
    62
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    63
        self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    64
        self.autoresizesSubviews = YES;
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    65
8233
ffece8ab18a6 Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
    66
        /* The EAGLRenderingAPI enum values currently map 1:1 to major GLES
ffece8ab18a6 Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
    67
           versions, and this allows us to handle future OpenGL ES versions.
ffece8ab18a6 Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
    68
         */
ffece8ab18a6 Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
    69
        EAGLRenderingAPI api = majorVersion;
ffece8ab18a6 Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
Sam Lantinga <slouken@libsdl.org>
parents: 8149
diff changeset
    70
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    71
        context = [[EAGLContext alloc] initWithAPI:api sharegroup:shareGroup];
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    72
        if (!context || ![EAGLContext setCurrentContext:context]) {
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    73
            [self release];
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    74
            SDL_SetError("OpenGL ES %d not supported", majorVersion);
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    75
            return nil;
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    76
        }
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    77
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    78
#ifdef __IPHONE_7_0
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    79
        /* sRGB context support was added in iOS 7 */
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    80
        BOOL hasiOS7 = [[UIDevice currentDevice].systemVersion compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending;
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    81
        if (sRGB && hasiOS7) {
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    82
            colorFormat = kEAGLColorFormatSRGBA8;
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    83
        } else
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    84
#endif
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
    85
        if (rBits >= 8 && gBits >= 8 && bBits >= 8) {
6022
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
    86
            /* if user specifically requests rbg888 or some color format higher than 16bpp */
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
    87
            colorFormat = kEAGLColorFormatRGBA8;
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
    88
        } else {
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
    89
            /* default case (faster) */
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
    90
            colorFormat = kEAGLColorFormatRGB565;
6021
a4bf2a9b0fd0 Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents: 6008
diff changeset
    91
        }
6001
3ae3d1e58d59 Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 5535
diff changeset
    92
6022
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
    93
        /* Get the layer */
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    94
        CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
6001
3ae3d1e58d59 Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 5535
diff changeset
    95
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    96
        eaglLayer.opaque = YES;
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
    97
        eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
9488
f15520430c94 Changed the way retina resolutions are handled in iOS.
Alex Szpakowski <slime73@gmail.com>
parents: 8891
diff changeset
    98
                                        [NSNumber numberWithBool: retained], kEAGLDrawablePropertyRetainedBacking,
f15520430c94 Changed the way retina resolutions are handled in iOS.
Alex Szpakowski <slime73@gmail.com>
parents: 8891
diff changeset
    99
                                        colorFormat, kEAGLDrawablePropertyColorFormat,
f15520430c94 Changed the way retina resolutions are handled in iOS.
Alex Szpakowski <slime73@gmail.com>
parents: 8891
diff changeset
   100
                                        nil];
6001
3ae3d1e58d59 Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 5535
diff changeset
   101
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   102
        /* Set the appropriate scale (for retina display support) */
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   103
        self.contentScaleFactor = scale;
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   104
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   105
        /* Create the color Renderbuffer Object */
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   106
        glGenRenderbuffersOES(1, &viewRenderbuffer);
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   107
        glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   108
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   109
        if (![context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:eaglLayer]) {
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   110
            [self release];
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   111
            SDL_SetError("Failed creating OpenGL ES drawable");
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   112
            return nil;
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   113
        }
6001
3ae3d1e58d59 Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 5535
diff changeset
   114
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   115
        /* Create the Framebuffer Object */
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   116
        glGenFramebuffersOES(1, &viewFramebuffer);
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   117
        glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
6001
3ae3d1e58d59 Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 5535
diff changeset
   118
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   119
        /* attach the color renderbuffer to the FBO */
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   120
        glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, viewRenderbuffer);
6001
3ae3d1e58d59 Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 5535
diff changeset
   121
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   122
        glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   123
        glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
5527
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   124
6021
a4bf2a9b0fd0 Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents: 6008
diff changeset
   125
        if ((useDepthBuffer) || (useStencilBuffer)) {
a4bf2a9b0fd0 Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents: 6008
diff changeset
   126
            if (useStencilBuffer) {
6022
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
   127
                /* Apparently you need to pack stencil and depth into one buffer. */
6021
a4bf2a9b0fd0 Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents: 6008
diff changeset
   128
                depthBufferFormat = GL_DEPTH24_STENCIL8_OES;
6022
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
   129
            } else if (useDepthBuffer) {
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
   130
                /* iOS only has 24-bit depth buffers, even with GL_DEPTH_COMPONENT16_OES */
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
   131
                depthBufferFormat = GL_DEPTH_COMPONENT24_OES;
6021
a4bf2a9b0fd0 Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents: 6008
diff changeset
   132
            }
6022
e0327dd7d0c0 More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents: 6021
diff changeset
   133
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   134
            glGenRenderbuffersOES(1, &depthRenderbuffer);
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   135
            glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   136
            glRenderbufferStorageOES(GL_RENDERBUFFER_OES, depthBufferFormat, backingWidth, backingHeight);
6021
a4bf2a9b0fd0 Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents: 6008
diff changeset
   137
            if (useDepthBuffer) {
a4bf2a9b0fd0 Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents: 6008
diff changeset
   138
                glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
a4bf2a9b0fd0 Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents: 6008
diff changeset
   139
            }
a4bf2a9b0fd0 Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents: 6008
diff changeset
   140
            if (useStencilBuffer) {
a4bf2a9b0fd0 Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents: 6008
diff changeset
   141
                glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_STENCIL_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
a4bf2a9b0fd0 Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents: 6008
diff changeset
   142
            }
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   143
        }
6001
3ae3d1e58d59 Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 5535
diff changeset
   144
6003
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   145
        if (glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) {
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   146
            [self release];
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   147
            SDL_SetError("Failed creating OpenGL ES framebuffer");
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   148
            return nil;
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   149
        }
7784
70b305e09b4e Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents: 7423
diff changeset
   150
70b305e09b4e Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents: 7423
diff changeset
   151
        glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   152
    }
5130
ec13e48ee0d9 Fixed bug #1112 (retina display support)
Sam Lantinga <slouken@libsdl.org>
parents: 5129
diff changeset
   153
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   154
    return self;
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   155
}
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   156
6003
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   157
- (void)updateFrame
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   158
{
5527
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   159
    glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   160
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, 0);
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   161
    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, 0);
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   162
    glDeleteRenderbuffersOES(1, &viewRenderbuffer);
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   163
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   164
    glGenRenderbuffersOES(1, &viewRenderbuffer);
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   165
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   166
    [context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];
6001
3ae3d1e58d59 Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 5535
diff changeset
   167
    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, viewRenderbuffer);
5527
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   168
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   169
    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   170
    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   171
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   172
    if (depthRenderbuffer != 0) {
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   173
        glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   174
        glRenderbufferStorageOES(GL_RENDERBUFFER_OES, depthBufferFormat, backingWidth, backingHeight);
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   175
    }
7784
70b305e09b4e Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents: 7423
diff changeset
   176
70b305e09b4e Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents: 7423
diff changeset
   177
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
5527
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   178
}
9a03d2300486 iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents: 5520
diff changeset
   179
6342
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   180
- (void)setAnimationCallback:(int)interval
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   181
    callback:(void (*)(void*))callback
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   182
    callbackParam:(void*)callbackParam
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   183
{
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   184
    [self stopAnimation];
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   185
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   186
    animationInterval = interval;
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   187
    animationCallback = callback;
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   188
    animationCallbackParam = callbackParam;
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   189
9492
cad5a9995bde The iOS 7 transparent status bar now uses white text rather than black.
Alex Szpakowski <slime73@gmail.com>
parents: 9488
diff changeset
   190
    if (animationCallback) {
6342
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   191
        [self startAnimation];
9492
cad5a9995bde The iOS 7 transparent status bar now uses white text rather than black.
Alex Szpakowski <slime73@gmail.com>
parents: 9488
diff changeset
   192
    }
6342
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   193
}
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   194
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   195
- (void)startAnimation
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   196
{
8891
7b6472f1b7ba Fixed bug 2563 - Remove obsolete code for supporting iOS < 5
Sam Lantinga <slouken@libsdl.org>
parents: 8233
diff changeset
   197
    displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(doLoop:)];
6342
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   198
    [displayLink setFrameInterval:animationInterval];
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   199
    [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   200
}
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   201
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   202
- (void)stopAnimation
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   203
{
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   204
    [displayLink invalidate];
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   205
    displayLink = nil;
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   206
}
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   207
8891
7b6472f1b7ba Fixed bug 2563 - Remove obsolete code for supporting iOS < 5
Sam Lantinga <slouken@libsdl.org>
parents: 8233
diff changeset
   208
- (void)doLoop:(CADisplayLink*)sender
6342
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   209
{
7191
75360622e65f File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents: 6885
diff changeset
   210
    /* Don't run the game loop while a messagebox is up */
6686
45014250760c Don't run the game loop while a messagebox is up
Sam Lantinga <slouken@libsdl.org>
parents: 6435
diff changeset
   211
    if (!UIKit_ShowingMessageBox()) {
45014250760c Don't run the game loop while a messagebox is up
Sam Lantinga <slouken@libsdl.org>
parents: 6435
diff changeset
   212
        animationCallback(animationCallbackParam);
45014250760c Don't run the game loop while a messagebox is up
Sam Lantinga <slouken@libsdl.org>
parents: 6435
diff changeset
   213
    }
6342
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   214
}
ac83b73f0edd Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents: 6267
diff changeset
   215
6003
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   216
- (void)setCurrentContext
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   217
{
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   218
    [EAGLContext setCurrentContext:context];
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   219
}
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   220
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   221
6003
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   222
- (void)swapBuffers
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   223
{
7784
70b305e09b4e Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents: 7423
diff changeset
   224
    /* viewRenderbuffer should always be bound here. Code that binds something
70b305e09b4e Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents: 7423
diff changeset
   225
        else is responsible for rebinding viewRenderbuffer, to reduce
70b305e09b4e Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents: 7423
diff changeset
   226
        duplicate state changes. */
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   227
    [context presentRenderbuffer:GL_RENDERBUFFER_OES];
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   228
}
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   229
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   230
6003
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   231
- (void)layoutSubviews
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   232
{
9496
abc8df8ce987 The default implementation of [view layoutSubviews] actually does something in iOS 6+, so we should call [super layoutSubviews] when overriding it.
Alex Szpakowski <slime73@gmail.com>
parents: 9492
diff changeset
   233
    [super layoutSubviews];
abc8df8ce987 The default implementation of [view layoutSubviews] actually does something in iOS 6+, so we should call [super layoutSubviews] when overriding it.
Alex Szpakowski <slime73@gmail.com>
parents: 9492
diff changeset
   234
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   235
    [EAGLContext setCurrentContext:context];
6435
6172658e3ce9 We can update the OpenGL layer binding when we're laying out the views
Sam Lantinga <slouken@libsdl.org>
parents: 6342
diff changeset
   236
    [self updateFrame];
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   237
}
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   238
6003
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   239
- (void)destroyFramebuffer
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   240
{
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   241
    if (viewFramebuffer != 0) {
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   242
        glDeleteFramebuffersOES(1, &viewFramebuffer);
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   243
        viewFramebuffer = 0;
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   244
    }
6001
3ae3d1e58d59 Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 5535
diff changeset
   245
9498
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   246
    if (viewRenderbuffer != 0) {
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   247
        glDeleteRenderbuffersOES(1, &viewRenderbuffer);
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   248
        viewRenderbuffer = 0;
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   249
    }
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   250
d02c27e3f698 Cleaned up iOS OpenGL ES context creation code and added sRGB context support on iOS 7+
Alex Szpakowski <slime73@gmail.com>
parents: 9496
diff changeset
   251
    if (depthRenderbuffer != 0) {
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   252
        glDeleteRenderbuffersOES(1, &depthRenderbuffer);
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   253
        depthRenderbuffer = 0;
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   254
    }
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   255
}
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   256
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   257
6003
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   258
- (void)dealloc
fddf81967e2d Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 6001
diff changeset
   259
{
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   260
    [self destroyFramebuffer];
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   261
    if ([EAGLContext currentContext] == context) {
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   262
        [EAGLContext setCurrentContext:nil];
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   263
    }
6001
3ae3d1e58d59 Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents: 5535
diff changeset
   264
    [context release];
5129
5690ebc772c7 Fixed spacing
Sam Lantinga <slouken@libsdl.org>
parents: 2859
diff changeset
   265
    [super dealloc];
2765
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   266
}
f55c87ae336b Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   267
2859
99210400e8b9 Updated copyright date
Sam Lantinga <slouken@libsdl.org>
parents: 2765
diff changeset
   268
@end
5132
5f09cb749d75 Added vim spacing hints
Sam Lantinga <slouken@libsdl.org>
parents: 5130
diff changeset
   269
6044
35448a5ea044 Lots of fixes importing SDL source wholesale into a new iOS project
Sam Lantinga <slouken@libsdl.org>
parents: 6022
diff changeset
   270
#endif /* SDL_VIDEO_DRIVER_UIKIT */
35448a5ea044 Lots of fixes importing SDL source wholesale into a new iOS project
Sam Lantinga <slouken@libsdl.org>
parents: 6022
diff changeset
   271
5132
5f09cb749d75 Added vim spacing hints
Sam Lantinga <slouken@libsdl.org>
parents: 5130
diff changeset
   272
/* vi: set ts=4 sw=4 expandtab: */