--- a/cocoaTouch/SDLOverrides/SDL_uikitopenglview.m Fri Jan 29 00:55:14 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/*
- SDL - Simple DirectMedia Layer
- Copyright (C) 1997-2009 Sam Lantinga
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
- Sam Lantinga
- slouken@libsdl.org
- */
-
-#import <QuartzCore/QuartzCore.h>
-#import <OpenGLES/EAGLDrawable.h>
-#import "SDL_uikitopenglview.h"
-
-@interface SDL_uikitopenglview (privateMethods)
-
-- (BOOL) createFramebuffer;
-- (void) destroyFramebuffer;
-
-@end
-
-
-@implementation SDL_uikitopenglview
-
-@synthesize context;
-
-+ (Class)layerClass {
- return [CAEAGLLayer class];
-}
-
-- (id)initWithFrame:(CGRect)frame \
-retainBacking:(BOOL)retained \
-rBits:(int)rBits \
-gBits:(int)gBits \
-bBits:(int)bBits \
-aBits:(int)aBits \
-depthBits:(int)depthBits \
-{
-
- NSString *colorFormat=nil;
- GLuint depthBufferFormat;
- BOOL useDepthBuffer;
-
- if (rBits == 8 && gBits == 8 && bBits == 8) {
- /* if user specifically requests rbg888 or some color format higher than 16bpp */
- colorFormat = kEAGLColorFormatRGBA8;
- }
- else {
- /* default case (faster) */
- colorFormat = kEAGLColorFormatRGB565;
- }
-
- if (depthBits == 24) {
- useDepthBuffer = YES;
- depthBufferFormat = GL_DEPTH_COMPONENT24_OES;
- }
- else if (depthBits == 0) {
- useDepthBuffer = NO;
- }
- else {
- /* default case when depth buffer is not disabled */
- /*
- strange, even when we use this, we seem to get a 24 bit depth buffer on iPhone.
- perhaps that's the only depth format iPhone actually supports
- */
- useDepthBuffer = YES;
- depthBufferFormat = GL_DEPTH_COMPONENT16_OES;
- }
-
-
- // we invert heigh and size to get q landscape mode up
- CGRect rect = [[UIScreen mainScreen] bounds];
- float swapTemp = rect.size.height;
- rect.size.width = rect.size.height;
- rect.size.height = swapTemp;
-
- if ((self = [super initWithFrame:rect])) {
- // Get the layer
- CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;
-
- eaglLayer.opaque = YES;
- eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
- [NSNumber numberWithBool: retained], kEAGLDrawablePropertyRetainedBacking, colorFormat, kEAGLDrawablePropertyColorFormat, nil];
-
- context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES1];
-
- if (!context || ![EAGLContext setCurrentContext:context]) {
- [self release];
- return nil;
- }
-
- /* create the buffers */
- glGenFramebuffersOES(1, &viewFramebuffer);
- glGenRenderbuffersOES(1, &viewRenderbuffer);
-
- glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
- glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
- [context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];
- glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, viewRenderbuffer);
-
- glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
- glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);
-
- if (useDepthBuffer) {
- glGenRenderbuffersOES(1, &depthRenderbuffer);
- glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
- glRenderbufferStorageOES(GL_RENDERBUFFER_OES, depthBufferFormat, backingWidth, backingHeight);
- glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
- }
-
- if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) {
- return NO;
- }
- /* end create buffers */
- }
- return self;
-}
-
-- (void)setCurrentContext {
- [EAGLContext setCurrentContext:context];
-}
-
-
-- (void)swapBuffers {
- glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
- [context presentRenderbuffer:GL_RENDERBUFFER_OES];
-}
-
-
-- (void)layoutSubviews {
- [EAGLContext setCurrentContext:context];
-}
-
-- (void)destroyFramebuffer {
-
- glDeleteFramebuffersOES(1, &viewFramebuffer);
- viewFramebuffer = 0;
- glDeleteRenderbuffersOES(1, &viewRenderbuffer);
- viewRenderbuffer = 0;
-
- if (depthRenderbuffer) {
- glDeleteRenderbuffersOES(1, &depthRenderbuffer);
- depthRenderbuffer = 0;
- }
-}
-
-
-- (void)dealloc {
-
- [self destroyFramebuffer];
- if ([EAGLContext currentContext] == context) {
- [EAGLContext setCurrentContext:nil];
- }
- [context release];
- [super dealloc];
-
-}
-
-@end