author | Alex Szpakowski <slime73@gmail.com> |
Wed, 23 Jul 2014 03:05:31 -0300 | |
branch | iOS-improvements |
changeset 9501 | 574db299498f |
parent 9500 | cbf5c5ecf5ac |
child 9502 | 933ed557b7c1 |
permissions | -rw-r--r-- |
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 | 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 | 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 | 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 | 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 |
|
9501
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
31 |
@implementation SDL_uikitopenglview { |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
32 |
|
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
33 |
/* OpenGL names for the renderbuffer and framebuffers used to render to this view */ |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
34 |
GLuint viewRenderbuffer, viewFramebuffer; |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
35 |
|
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
36 |
/* OpenGL name for the depth buffer that is attached to viewFramebuffer, if it exists (0 if it does not exist) */ |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
37 |
GLuint depthRenderbuffer; |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
38 |
|
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
39 |
/* format of depthRenderbuffer */ |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
40 |
GLenum depthBufferFormat; |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
41 |
|
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
42 |
id displayLink; |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
43 |
int animationInterval; |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
44 |
void (*animationCallback)(void*); |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
45 |
void *animationCallbackParam; |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
46 |
|
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
47 |
} |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
48 |
|
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
49 |
@synthesize context; |
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
50 |
|
9501
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
51 |
@synthesize backingWidth; |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
52 |
@synthesize backingHeight; |
9488
f15520430c94
Changed the way retina resolutions are handled in iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
8891
diff
changeset
|
53 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
54 |
+ (Class)layerClass |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
55 |
{ |
5129 | 56 |
return [CAEAGLLayer class]; |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
57 |
} |
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
58 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
59 |
- (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
|
60 |
scale:(CGFloat)scale |
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
61 |
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
|
62 |
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
|
63 |
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
|
64 |
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
|
65 |
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
|
66 |
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
|
67 |
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
|
68 |
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
|
69 |
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
|
70 |
shareGroup:(EAGLSharegroup*)shareGroup |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
71 |
{ |
6022
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
72 |
if ((self = [super initWithFrame:frame])) { |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
73 |
const BOOL useStencilBuffer = (stencilBits != 0); |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
74 |
const BOOL useDepthBuffer = (depthBits != 0); |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
75 |
NSString *colorFormat = nil; |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
76 |
|
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
|
77 |
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
|
78 |
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
|
79 |
|
8233
ffece8ab18a6
Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
Sam Lantinga <slouken@libsdl.org>
parents:
8149
diff
changeset
|
80 |
/* 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
|
81 |
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
|
82 |
*/ |
ffece8ab18a6
Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
Sam Lantinga <slouken@libsdl.org>
parents:
8149
diff
changeset
|
83 |
EAGLRenderingAPI api = majorVersion; |
ffece8ab18a6
Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
Sam Lantinga <slouken@libsdl.org>
parents:
8149
diff
changeset
|
84 |
|
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
|
85 |
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
|
86 |
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
|
87 |
[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
|
88 |
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
|
89 |
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
|
90 |
} |
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
|
91 |
|
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
|
92 |
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
|
93 |
if (sRGB && hasiOS7) { |
9500
cbf5c5ecf5ac
90% of iOS users on the App Store run at least iOS 7, so it doesn't make sense to support building using an SDK that doesn't support iOS 7. The minimum supported runtime version is still iOS 5.1.
Alex Szpakowski <slime73@gmail.com>
parents:
9499
diff
changeset
|
94 |
/* sRGB EAGL drawable support was added in iOS 7 */ |
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
|
95 |
colorFormat = kEAGLColorFormatSRGBA8; |
9500
cbf5c5ecf5ac
90% of iOS users on the App Store run at least iOS 7, so it doesn't make sense to support building using an SDK that doesn't support iOS 7. The minimum supported runtime version is still iOS 5.1.
Alex Szpakowski <slime73@gmail.com>
parents:
9499
diff
changeset
|
96 |
} else 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
|
97 |
/* 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
|
98 |
colorFormat = kEAGLColorFormatRGBA8; |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
99 |
} else { |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
100 |
/* default case (faster) */ |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
101 |
colorFormat = kEAGLColorFormatRGB565; |
6021
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
102 |
} |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
103 |
|
6022
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
104 |
/* Get the layer */ |
5129 | 105 |
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer; |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
106 |
|
5129 | 107 |
eaglLayer.opaque = YES; |
9499
6fe9b44b2d84
Updated the iOS Objective-C code to use NSDictionary/NSArray/NSNumber literals and subscripting, for improved code clarity.
Alex Szpakowski <slime73@gmail.com>
parents:
9498
diff
changeset
|
108 |
eaglLayer.drawableProperties = @{ |
6fe9b44b2d84
Updated the iOS Objective-C code to use NSDictionary/NSArray/NSNumber literals and subscripting, for improved code clarity.
Alex Szpakowski <slime73@gmail.com>
parents:
9498
diff
changeset
|
109 |
kEAGLDrawablePropertyRetainedBacking: @(retained), |
6fe9b44b2d84
Updated the iOS Objective-C code to use NSDictionary/NSArray/NSNumber literals and subscripting, for improved code clarity.
Alex Szpakowski <slime73@gmail.com>
parents:
9498
diff
changeset
|
110 |
kEAGLDrawablePropertyColorFormat: colorFormat |
6fe9b44b2d84
Updated the iOS Objective-C code to use NSDictionary/NSArray/NSNumber literals and subscripting, for improved code clarity.
Alex Szpakowski <slime73@gmail.com>
parents:
9498
diff
changeset
|
111 |
}; |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
112 |
|
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
|
113 |
/* 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
|
114 |
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
|
115 |
|
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
|
116 |
/* 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
|
117 |
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
|
118 |
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
|
119 |
|
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
|
120 |
if (![context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:eaglLayer]) { |
5129 | 121 |
[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
|
122 |
SDL_SetError("Failed creating OpenGL ES drawable"); |
5129 | 123 |
return nil; |
124 |
} |
|
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
125 |
|
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
|
126 |
/* Create the Framebuffer Object */ |
5129 | 127 |
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
|
128 |
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer); |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
129 |
|
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
|
130 |
/* attach the color renderbuffer to the FBO */ |
5129 | 131 |
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
|
132 |
|
5129 | 133 |
glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth); |
134 |
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
|
135 |
|
6021
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
136 |
if ((useDepthBuffer) || (useStencilBuffer)) { |
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
137 |
if (useStencilBuffer) { |
6022
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
138 |
/* 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
|
139 |
depthBufferFormat = GL_DEPTH24_STENCIL8_OES; |
6022
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
140 |
} else if (useDepthBuffer) { |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
141 |
/* 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
|
142 |
depthBufferFormat = GL_DEPTH_COMPONENT24_OES; |
6021
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
143 |
} |
6022
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
144 |
|
5129 | 145 |
glGenRenderbuffersOES(1, &depthRenderbuffer); |
146 |
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer); |
|
147 |
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
|
148 |
if (useDepthBuffer) { |
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
149 |
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
|
150 |
} |
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
151 |
if (useStencilBuffer) { |
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
152 |
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
|
153 |
} |
5129 | 154 |
} |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
155 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
156 |
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
|
157 |
[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
|
158 |
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
|
159 |
return nil; |
5129 | 160 |
} |
7784
70b305e09b4e
Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents:
7423
diff
changeset
|
161 |
|
70b305e09b4e
Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents:
7423
diff
changeset
|
162 |
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
|
163 |
} |
5130
ec13e48ee0d9
Fixed bug #1112 (retina display support)
Sam Lantinga <slouken@libsdl.org>
parents:
5129
diff
changeset
|
164 |
|
5129 | 165 |
return self; |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
166 |
} |
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
167 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
168 |
- (void)updateFrame |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
169 |
{ |
5527
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
170 |
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer); |
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
171 |
glBindRenderbufferOES(GL_RENDERBUFFER_OES, 0); |
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
172 |
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
|
173 |
glDeleteRenderbuffersOES(1, &viewRenderbuffer); |
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
174 |
|
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
175 |
glGenRenderbuffersOES(1, &viewRenderbuffer); |
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
176 |
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer); |
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
177 |
[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
|
178 |
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
|
179 |
|
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
180 |
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
|
181 |
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
|
182 |
|
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
183 |
if (depthRenderbuffer != 0) { |
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
184 |
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer); |
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
185 |
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
|
186 |
} |
7784
70b305e09b4e
Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents:
7423
diff
changeset
|
187 |
|
70b305e09b4e
Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents:
7423
diff
changeset
|
188 |
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer); |
5527
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
189 |
} |
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
190 |
|
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 |
- (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
|
192 |
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
|
193 |
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
|
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 |
[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
|
196 |
|
ac83b73f0edd
Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents:
6267
diff
changeset
|
197 |
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
|
198 |
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
|
199 |
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
|
200 |
|
9492
cad5a9995bde
The iOS 7 transparent status bar now uses white text rather than black.
Alex Szpakowski <slime73@gmail.com>
parents:
9488
diff
changeset
|
201 |
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
|
202 |
[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
|
203 |
} |
6342
ac83b73f0edd
Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents:
6267
diff
changeset
|
204 |
} |
ac83b73f0edd
Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents:
6267
diff
changeset
|
205 |
|
ac83b73f0edd
Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents:
6267
diff
changeset
|
206 |
- (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
|
207 |
{ |
8891
7b6472f1b7ba
Fixed bug 2563 - Remove obsolete code for supporting iOS < 5
Sam Lantinga <slouken@libsdl.org>
parents:
8233
diff
changeset
|
208 |
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
|
209 |
[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
|
210 |
[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
|
211 |
} |
ac83b73f0edd
Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents:
6267
diff
changeset
|
212 |
|
ac83b73f0edd
Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents:
6267
diff
changeset
|
213 |
- (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
|
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 |
[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
|
216 |
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
|
217 |
} |
ac83b73f0edd
Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents:
6267
diff
changeset
|
218 |
|
8891
7b6472f1b7ba
Fixed bug 2563 - Remove obsolete code for supporting iOS < 5
Sam Lantinga <slouken@libsdl.org>
parents:
8233
diff
changeset
|
219 |
- (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
|
220 |
{ |
7191
75360622e65f
File style cleanup for the SDL 2.0 release
Sam Lantinga <slouken@libsdl.org>
parents:
6885
diff
changeset
|
221 |
/* 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
|
222 |
if (!UIKit_ShowingMessageBox()) { |
45014250760c
Don't run the game loop while a messagebox is up
Sam Lantinga <slouken@libsdl.org>
parents:
6435
diff
changeset
|
223 |
animationCallback(animationCallbackParam); |
45014250760c
Don't run the game loop while a messagebox is up
Sam Lantinga <slouken@libsdl.org>
parents:
6435
diff
changeset
|
224 |
} |
6342
ac83b73f0edd
Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents:
6267
diff
changeset
|
225 |
} |
ac83b73f0edd
Created a header file for system dependent API functions, and added SDL_iPhoneSetAnimationCallback()
Sam Lantinga <slouken@libsdl.org>
parents:
6267
diff
changeset
|
226 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
227 |
- (void)setCurrentContext |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
228 |
{ |
5129 | 229 |
[EAGLContext setCurrentContext:context]; |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
230 |
} |
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
231 |
|
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
232 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
233 |
- (void)swapBuffers |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
234 |
{ |
7784
70b305e09b4e
Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents:
7423
diff
changeset
|
235 |
/* 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
|
236 |
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
|
237 |
duplicate state changes. */ |
5129 | 238 |
[context presentRenderbuffer:GL_RENDERBUFFER_OES]; |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
239 |
} |
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
240 |
|
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
241 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
242 |
- (void)layoutSubviews |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
243 |
{ |
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
|
244 |
[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
|
245 |
|
5129 | 246 |
[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
|
247 |
[self updateFrame]; |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
248 |
} |
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
249 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
250 |
- (void)destroyFramebuffer |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
251 |
{ |
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
|
252 |
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
|
253 |
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
|
254 |
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
|
255 |
} |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
256 |
|
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
|
257 |
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
|
258 |
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
|
259 |
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
|
260 |
} |
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
|
261 |
|
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
|
262 |
if (depthRenderbuffer != 0) { |
5129 | 263 |
glDeleteRenderbuffersOES(1, &depthRenderbuffer); |
264 |
depthRenderbuffer = 0; |
|
265 |
} |
|
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 |
|
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
268 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
269 |
- (void)dealloc |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
270 |
{ |
5129 | 271 |
[self destroyFramebuffer]; |
272 |
if ([EAGLContext currentContext] == context) { |
|
273 |
[EAGLContext setCurrentContext:nil]; |
|
274 |
} |
|
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
275 |
[context release]; |
5129 | 276 |
[super dealloc]; |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
277 |
} |
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
278 |
|
2859 | 279 |
@end |
5132 | 280 |
|
6044
35448a5ea044
Lots of fixes importing SDL source wholesale into a new iOS project
Sam Lantinga <slouken@libsdl.org>
parents:
6022
diff
changeset
|
281 |
#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
|
282 |
|
5132 | 283 |
/* vi: set ts=4 sw=4 expandtab: */ |