author | Alex Szpakowski <slime73@gmail.com> |
Tue, 09 Jun 2015 21:08:24 -0300 | |
changeset 9727 | b845f659e015 |
parent 9619 | b94b6d0bff0f |
child 9810 | 1e079120100e |
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 |
9619
b94b6d0bff0f
Updated the copyright year to 2015
Sam Lantinga <slouken@libsdl.org>
parents:
9532
diff
changeset
|
3 |
Copyright (C) 1997-2015 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 <OpenGLES/EAGLDrawable.h> |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
26 |
#include <OpenGLES/ES2/glext.h> |
9532
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
27 |
#import "SDL_uikitopenglview.h" |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
28 |
#include "SDL_uikitwindow.h" |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
29 |
|
9501
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
30 |
@implementation SDL_uikitopenglview { |
9532
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
31 |
/* The renderbuffer and framebuffer used to render to this layer. */ |
9501
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
32 |
GLuint viewRenderbuffer, viewFramebuffer; |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
33 |
|
9532
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
34 |
/* The depth buffer that is attached to viewFramebuffer, if it exists. */ |
9501
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
35 |
GLuint depthRenderbuffer; |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
36 |
|
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
37 |
/* format of depthRenderbuffer */ |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
38 |
GLenum depthBufferFormat; |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
39 |
} |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
40 |
|
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
41 |
@synthesize context; |
9501
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
42 |
@synthesize backingWidth; |
574db299498f
More cleanup of the iOS Objective-C code.
Alex Szpakowski <slime73@gmail.com>
parents:
9500
diff
changeset
|
43 |
@synthesize backingHeight; |
9488
f15520430c94
Changed the way retina resolutions are handled in iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
8891
diff
changeset
|
44 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
45 |
+ (Class)layerClass |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
46 |
{ |
5129 | 47 |
return [CAEAGLLayer class]; |
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 |
|
9532
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
50 |
- (instancetype)initWithFrame:(CGRect)frame |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
51 |
scale:(CGFloat)scale |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
52 |
retainBacking:(BOOL)retained |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
53 |
rBits:(int)rBits |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
54 |
gBits:(int)gBits |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
55 |
bBits:(int)bBits |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
56 |
aBits:(int)aBits |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
57 |
depthBits:(int)depthBits |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
58 |
stencilBits:(int)stencilBits |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
59 |
sRGB:(BOOL)sRGB |
9727
b845f659e015
iOS: Fixed some cases where SDL_DestroyWindow or SDL_GL_DeleteContext can cause crashes.
Alex Szpakowski <slime73@gmail.com>
parents:
9619
diff
changeset
|
60 |
context:(EAGLContext *)glcontext |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
61 |
{ |
6022
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
62 |
if ((self = [super initWithFrame:frame])) { |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
63 |
const BOOL useStencilBuffer = (stencilBits != 0); |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
64 |
const BOOL useDepthBuffer = (depthBits != 0); |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
65 |
NSString *colorFormat = nil; |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
66 |
|
9727
b845f659e015
iOS: Fixed some cases where SDL_DestroyWindow or SDL_GL_DeleteContext can cause crashes.
Alex Szpakowski <slime73@gmail.com>
parents:
9619
diff
changeset
|
67 |
context = glcontext; |
8233
ffece8ab18a6
Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS
Sam Lantinga <slouken@libsdl.org>
parents:
8149
diff
changeset
|
68 |
|
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
|
69 |
if (!context || ![EAGLContext setCurrentContext:context]) { |
9727
b845f659e015
iOS: Fixed some cases where SDL_DestroyWindow or SDL_GL_DeleteContext can cause crashes.
Alex Szpakowski <slime73@gmail.com>
parents:
9619
diff
changeset
|
70 |
SDL_SetError("Could not create OpenGL ES drawable (could not make context current)"); |
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 |
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
|
72 |
} |
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 |
|
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
74 |
if (sRGB) { |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
75 |
/* sRGB EAGL drawable support was added in iOS 7. */ |
9525
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
76 |
if (UIKit_IsSystemVersionAtLeast(7.0)) { |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
77 |
colorFormat = kEAGLColorFormatSRGBA8; |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
78 |
} else { |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
79 |
SDL_SetError("sRGB drawables are not supported."); |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
80 |
return nil; |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
81 |
} |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
82 |
} 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
|
83 |
/* 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
|
84 |
colorFormat = kEAGLColorFormatRGBA8; |
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
85 |
} else { |
9532
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
86 |
/* default case (potentially faster) */ |
6022
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
87 |
colorFormat = kEAGLColorFormatRGB565; |
6021
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
88 |
} |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
89 |
|
5129 | 90 |
CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer; |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
91 |
|
5129 | 92 |
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
|
93 |
eaglLayer.drawableProperties = @{ |
9524
9de159f9cefd
Minor objective-c code style improvements
Alex Szpakowski <slime73@gmail.com>
parents:
9520
diff
changeset
|
94 |
kEAGLDrawablePropertyRetainedBacking:@(retained), |
9de159f9cefd
Minor objective-c code style improvements
Alex Szpakowski <slime73@gmail.com>
parents:
9520
diff
changeset
|
95 |
kEAGLDrawablePropertyColorFormat:colorFormat |
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
|
96 |
}; |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
97 |
|
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
|
98 |
/* 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
|
99 |
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
|
100 |
|
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
|
101 |
/* Create the color Renderbuffer Object */ |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
102 |
glGenRenderbuffers(1, &viewRenderbuffer); |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
103 |
glBindRenderbuffer(GL_RENDERBUFFER, 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
|
104 |
|
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
105 |
if (![context renderbufferStorage:GL_RENDERBUFFER fromDrawable:eaglLayer]) { |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
106 |
SDL_SetError("Failed to create OpenGL ES drawable"); |
5129 | 107 |
return nil; |
108 |
} |
|
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
109 |
|
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
|
110 |
/* Create the Framebuffer Object */ |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
111 |
glGenFramebuffers(1, &viewFramebuffer); |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
112 |
glBindFramebuffer(GL_FRAMEBUFFER, viewFramebuffer); |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
113 |
|
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
|
114 |
/* attach the color renderbuffer to the FBO */ |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
115 |
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, viewRenderbuffer); |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
116 |
|
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
117 |
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &backingWidth); |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
118 |
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &backingHeight); |
5527
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
119 |
|
6021
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
120 |
if ((useDepthBuffer) || (useStencilBuffer)) { |
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
121 |
if (useStencilBuffer) { |
6022
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
122 |
/* 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
|
123 |
depthBufferFormat = GL_DEPTH24_STENCIL8_OES; |
6022
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
124 |
} else if (useDepthBuffer) { |
9532
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
125 |
/* iOS only uses 32-bit float (exposed as fixed point 24-bit) |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
126 |
* depth buffers. */ |
6022
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
127 |
depthBufferFormat = GL_DEPTH_COMPONENT24_OES; |
6021
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
128 |
} |
6022
e0327dd7d0c0
More cleanup in SDL_uikitopenglview.m
Ryan C. Gordon <icculus@icculus.org>
parents:
6021
diff
changeset
|
129 |
|
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
130 |
glGenRenderbuffers(1, &depthRenderbuffer); |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
131 |
glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer); |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
132 |
glRenderbufferStorage(GL_RENDERBUFFER, depthBufferFormat, backingWidth, backingHeight); |
6021
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
133 |
if (useDepthBuffer) { |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
134 |
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer); |
6021
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
135 |
} |
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
136 |
if (useStencilBuffer) { |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
137 |
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer); |
6021
a4bf2a9b0fd0
Added stencil buffer support on iOS.
Ryan C. Gordon <icculus@icculus.org>
parents:
6008
diff
changeset
|
138 |
} |
5129 | 139 |
} |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
140 |
|
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
141 |
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { |
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
|
142 |
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
|
143 |
return nil; |
5129 | 144 |
} |
7784
70b305e09b4e
Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents:
7423
diff
changeset
|
145 |
|
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
146 |
glBindRenderbuffer(GL_RENDERBUFFER, viewRenderbuffer); |
9525
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
147 |
|
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
148 |
[self setDebugLabels]; |
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
|
149 |
} |
5130
ec13e48ee0d9
Fixed bug #1112 (retina display support)
Sam Lantinga <slouken@libsdl.org>
parents:
5129
diff
changeset
|
150 |
|
5129 | 151 |
return self; |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
152 |
} |
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
153 |
|
9514
5b56ab9ff5fe
Added iOS-specific functions to get the window view's current OpenGL Renderbuffer and Framebuffer objects, so they can be more easily rebound when necessary.
Alex Szpakowski <slime73@gmail.com>
parents:
9510
diff
changeset
|
154 |
- (GLuint)drawableRenderbuffer |
5b56ab9ff5fe
Added iOS-specific functions to get the window view's current OpenGL Renderbuffer and Framebuffer objects, so they can be more easily rebound when necessary.
Alex Szpakowski <slime73@gmail.com>
parents:
9510
diff
changeset
|
155 |
{ |
5b56ab9ff5fe
Added iOS-specific functions to get the window view's current OpenGL Renderbuffer and Framebuffer objects, so they can be more easily rebound when necessary.
Alex Szpakowski <slime73@gmail.com>
parents:
9510
diff
changeset
|
156 |
return viewRenderbuffer; |
5b56ab9ff5fe
Added iOS-specific functions to get the window view's current OpenGL Renderbuffer and Framebuffer objects, so they can be more easily rebound when necessary.
Alex Szpakowski <slime73@gmail.com>
parents:
9510
diff
changeset
|
157 |
} |
5b56ab9ff5fe
Added iOS-specific functions to get the window view's current OpenGL Renderbuffer and Framebuffer objects, so they can be more easily rebound when necessary.
Alex Szpakowski <slime73@gmail.com>
parents:
9510
diff
changeset
|
158 |
|
5b56ab9ff5fe
Added iOS-specific functions to get the window view's current OpenGL Renderbuffer and Framebuffer objects, so they can be more easily rebound when necessary.
Alex Szpakowski <slime73@gmail.com>
parents:
9510
diff
changeset
|
159 |
- (GLuint)drawableFramebuffer |
5b56ab9ff5fe
Added iOS-specific functions to get the window view's current OpenGL Renderbuffer and Framebuffer objects, so they can be more easily rebound when necessary.
Alex Szpakowski <slime73@gmail.com>
parents:
9510
diff
changeset
|
160 |
{ |
5b56ab9ff5fe
Added iOS-specific functions to get the window view's current OpenGL Renderbuffer and Framebuffer objects, so they can be more easily rebound when necessary.
Alex Szpakowski <slime73@gmail.com>
parents:
9510
diff
changeset
|
161 |
return viewFramebuffer; |
5b56ab9ff5fe
Added iOS-specific functions to get the window view's current OpenGL Renderbuffer and Framebuffer objects, so they can be more easily rebound when necessary.
Alex Szpakowski <slime73@gmail.com>
parents:
9510
diff
changeset
|
162 |
} |
5b56ab9ff5fe
Added iOS-specific functions to get the window view's current OpenGL Renderbuffer and Framebuffer objects, so they can be more easily rebound when necessary.
Alex Szpakowski <slime73@gmail.com>
parents:
9510
diff
changeset
|
163 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
164 |
- (void)updateFrame |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
165 |
{ |
9526
b1e51123fbea
The iOS OpenGL ES context's color Renderbuffer Object is no longer completely destroyed and recreated in layoutSubviews. Its storage is now only reallocated when the actual size of the layer changes. The framebuffer object and renderbuffer object binding states are no longer clobbered by the storage reallocation code in layoutSubviews.
Alex Szpakowski <slime73@gmail.com>
parents:
9525
diff
changeset
|
166 |
GLint prevRenderbuffer = 0; |
b1e51123fbea
The iOS OpenGL ES context's color Renderbuffer Object is no longer completely destroyed and recreated in layoutSubviews. Its storage is now only reallocated when the actual size of the layer changes. The framebuffer object and renderbuffer object binding states are no longer clobbered by the storage reallocation code in layoutSubviews.
Alex Szpakowski <slime73@gmail.com>
parents:
9525
diff
changeset
|
167 |
glGetIntegerv(GL_RENDERBUFFER_BINDING, &prevRenderbuffer); |
5527
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
168 |
|
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
169 |
glBindRenderbuffer(GL_RENDERBUFFER, viewRenderbuffer); |
9532
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
170 |
[context renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer *)self.layer]; |
5527
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
171 |
|
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
172 |
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &backingWidth); |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
173 |
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &backingHeight); |
5527
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 |
if (depthRenderbuffer != 0) { |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
176 |
glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer); |
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
177 |
glRenderbufferStorage(GL_RENDERBUFFER, depthBufferFormat, backingWidth, backingHeight); |
5527
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
178 |
} |
7784
70b305e09b4e
Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents:
7423
diff
changeset
|
179 |
|
9526
b1e51123fbea
The iOS OpenGL ES context's color Renderbuffer Object is no longer completely destroyed and recreated in layoutSubviews. Its storage is now only reallocated when the actual size of the layer changes. The framebuffer object and renderbuffer object binding states are no longer clobbered by the storage reallocation code in layoutSubviews.
Alex Szpakowski <slime73@gmail.com>
parents:
9525
diff
changeset
|
180 |
glBindRenderbuffer(GL_RENDERBUFFER, prevRenderbuffer); |
9525
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
181 |
} |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
182 |
|
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
183 |
- (void)setDebugLabels |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
184 |
{ |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
185 |
if (viewFramebuffer != 0) { |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
186 |
glLabelObjectEXT(GL_FRAMEBUFFER, viewFramebuffer, 0, "context FBO"); |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
187 |
} |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
188 |
|
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
189 |
if (viewRenderbuffer != 0) { |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
190 |
glLabelObjectEXT(GL_RENDERBUFFER, viewRenderbuffer, 0, "context color buffer"); |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
191 |
} |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
192 |
|
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
193 |
if (depthRenderbuffer != 0) { |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
194 |
if (depthBufferFormat == GL_DEPTH24_STENCIL8_OES) { |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
195 |
glLabelObjectEXT(GL_RENDERBUFFER, depthRenderbuffer, 0, "context depth-stencil buffer"); |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
196 |
} else { |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
197 |
glLabelObjectEXT(GL_RENDERBUFFER, depthRenderbuffer, 0, "context depth buffer"); |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
198 |
} |
64e3f446d6d7
Added debug labels for the OpenGL ES objects created with SDL_GL_CreateContext on iOS.
Alex Szpakowski <slime73@gmail.com>
parents:
9524
diff
changeset
|
199 |
} |
5527
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
200 |
} |
9a03d2300486
iOS: Correctly resize renderbuffers when rotating orientation.
Ryan C. Gordon <icculus@icculus.org>
parents:
5520
diff
changeset
|
201 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
202 |
- (void)swapBuffers |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
203 |
{ |
7784
70b305e09b4e
Avoid redundant state changes in the GLES2 renderer.
Ryan C. Gordon <icculus@icculus.org>
parents:
7423
diff
changeset
|
204 |
/* viewRenderbuffer should always be bound here. Code that binds something |
9532
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
205 |
* else is responsible for rebinding viewRenderbuffer, to reduce duplicate |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
206 |
* state changes. */ |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
207 |
[context presentRenderbuffer:GL_RENDERBUFFER]; |
2765
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
208 |
} |
f55c87ae336b
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
diff
changeset
|
209 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
210 |
- (void)layoutSubviews |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
211 |
{ |
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
|
212 |
[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
|
213 |
|
9532
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
214 |
int width = (int) (self.bounds.size.width * self.contentScaleFactor); |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
215 |
int height = (int) (self.bounds.size.height * self.contentScaleFactor); |
9526
b1e51123fbea
The iOS OpenGL ES context's color Renderbuffer Object is no longer completely destroyed and recreated in layoutSubviews. Its storage is now only reallocated when the actual size of the layer changes. The framebuffer object and renderbuffer object binding states are no longer clobbered by the storage reallocation code in layoutSubviews.
Alex Szpakowski <slime73@gmail.com>
parents:
9525
diff
changeset
|
216 |
|
b1e51123fbea
The iOS OpenGL ES context's color Renderbuffer Object is no longer completely destroyed and recreated in layoutSubviews. Its storage is now only reallocated when the actual size of the layer changes. The framebuffer object and renderbuffer object binding states are no longer clobbered by the storage reallocation code in layoutSubviews.
Alex Szpakowski <slime73@gmail.com>
parents:
9525
diff
changeset
|
217 |
/* Update the color and depth buffer storage if the layer size has changed. */ |
b1e51123fbea
The iOS OpenGL ES context's color Renderbuffer Object is no longer completely destroyed and recreated in layoutSubviews. Its storage is now only reallocated when the actual size of the layer changes. The framebuffer object and renderbuffer object binding states are no longer clobbered by the storage reallocation code in layoutSubviews.
Alex Szpakowski <slime73@gmail.com>
parents:
9525
diff
changeset
|
218 |
if (width != backingWidth || height != backingHeight) { |
9532
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
219 |
EAGLContext *prevContext = [EAGLContext currentContext]; |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
220 |
if (prevContext != context) { |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
221 |
[EAGLContext setCurrentContext:context]; |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
222 |
} |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
223 |
|
9526
b1e51123fbea
The iOS OpenGL ES context's color Renderbuffer Object is no longer completely destroyed and recreated in layoutSubviews. Its storage is now only reallocated when the actual size of the layer changes. The framebuffer object and renderbuffer object binding states are no longer clobbered by the storage reallocation code in layoutSubviews.
Alex Szpakowski <slime73@gmail.com>
parents:
9525
diff
changeset
|
224 |
[self updateFrame]; |
9532
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
225 |
|
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
226 |
if (prevContext != context) { |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
227 |
[EAGLContext setCurrentContext:prevContext]; |
318042c16b76
Several improvements to the iOS backend:
Alex Szpakowski <slime73@gmail.com>
parents:
9529
diff
changeset
|
228 |
} |
9526
b1e51123fbea
The iOS OpenGL ES context's color Renderbuffer Object is no longer completely destroyed and recreated in layoutSubviews. Its storage is now only reallocated when the actual size of the layer changes. The framebuffer object and renderbuffer object binding states are no longer clobbered by the storage reallocation code in layoutSubviews.
Alex Szpakowski <slime73@gmail.com>
parents:
9525
diff
changeset
|
229 |
} |
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 |
|
6003
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
232 |
- (void)destroyFramebuffer |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
233 |
{ |
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
|
234 |
if (viewFramebuffer != 0) { |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
235 |
glDeleteFramebuffers(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
|
236 |
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
|
237 |
} |
6001
3ae3d1e58d59
Cleanup out trailing whitespace in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
5535
diff
changeset
|
238 |
|
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
|
239 |
if (viewRenderbuffer != 0) { |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
240 |
glDeleteRenderbuffers(1, &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
|
241 |
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
|
242 |
} |
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 |
|
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 |
if (depthRenderbuffer != 0) { |
9520
6a655264dd47
Switched to the core versions of OpenGL ES framebuffer object and renderbuffer functions.
Alex Szpakowski <slime73@gmail.com>
parents:
9514
diff
changeset
|
245 |
glDeleteRenderbuffers(1, &depthRenderbuffer); |
5129 | 246 |
depthRenderbuffer = 0; |
247 |
} |
|
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)dealloc |
fddf81967e2d
Use a consistent source code format in src/video/uikit
Kees Bakker <kees@ijzerbout.nl>
parents:
6001
diff
changeset
|
251 |
{ |
9727
b845f659e015
iOS: Fixed some cases where SDL_DestroyWindow or SDL_GL_DeleteContext can cause crashes.
Alex Szpakowski <slime73@gmail.com>
parents:
9619
diff
changeset
|
252 |
if (context && context == [EAGLContext currentContext]) { |
9510
e19faa3b5d88
Updated the iOS backend code to use Objective-C's automatic reference counting (ARC).
Alex Szpakowski <slime73@gmail.com>
parents:
9502
diff
changeset
|
253 |
[self destroyFramebuffer]; |
5129 | 254 |
[EAGLContext setCurrentContext:nil]; |
255 |
} |
|
2765
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 |
|
2859 | 258 |
@end |
5132 | 259 |
|
6044
35448a5ea044
Lots of fixes importing SDL source wholesale into a new iOS project
Sam Lantinga <slouken@libsdl.org>
parents:
6022
diff
changeset
|
260 |
#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
|
261 |
|
5132 | 262 |
/* vi: set ts=4 sw=4 expandtab: */ |