cocoaTouch/SDLOverrides/SDL_uikitopenglview.m
changeset 2724 601158aaa201
parent 2723 eaa6ac1e95ea
child 2725 89908847b155
--- 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