[SVN] r3730 - branches/gsoc2008_iphone/src/video/uikit

svn-owner at libsdl.org svn-owner at libsdl.org
Thu Jul 17 15:32:16 PDT 2008


Author: hfutrell
Date: 2008-07-17 15:32:16 -0700 (Thu, 17 Jul 2008)
New Revision: 3730

Added:
   branches/gsoc2008_iphone/src/video/uikit/SDL_uikitopengles.h
   branches/gsoc2008_iphone/src/video/uikit/SDL_uikitopengles.m
Log:
SDL_uikitopengles is responsible for OpenGLES related functions in the UIKit video driver.  The main thing to note is UIKit_GL_CreateContext which creates an instance of the SDL_uikitopenglview class, an OpenGL ES View.  Most the real functionality is in SDL_uikitopenglview.



Added: branches/gsoc2008_iphone/src/video/uikit/SDL_uikitopengles.h
===================================================================
--- branches/gsoc2008_iphone/src/video/uikit/SDL_uikitopengles.h	                        (rev 0)
+++ branches/gsoc2008_iphone/src/video/uikit/SDL_uikitopengles.h	2008-07-17 22:32:16 UTC (rev 3730)
@@ -0,0 +1,23 @@
+/*
+ *  SDL_uikitopengles.h
+ *  iPodSDL
+ *
+ *  Created by Holmes Futrell on 5/29/08.
+ *  Copyright 2008 __MyCompanyName__. All rights reserved.
+ *
+ */
+
+#include "SDL_config.h"
+
+#ifndef _SDL_uikitopengles
+#define _SDL_uikitopengles
+
+#include "SDL_uikitvideo.h"
+
+extern int UIKit_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context);
+extern void UIKit_GL_SwapWindow(_THIS, SDL_Window * window);
+extern SDL_GLContext UIKit_GL_CreateContext(_THIS, SDL_Window * window);
+extern void UIKit_GL_DeleteContext(_THIS, SDL_GLContext context);
+extern void *UIKit_GL_GetProcAddress(_THIS, const char *proc);
+extern int UIKit_GL_LoadLibrary(_THIS, const char *path);
+#endif
\ No newline at end of file

Added: branches/gsoc2008_iphone/src/video/uikit/SDL_uikitopengles.m
===================================================================
--- branches/gsoc2008_iphone/src/video/uikit/SDL_uikitopengles.m	                        (rev 0)
+++ branches/gsoc2008_iphone/src/video/uikit/SDL_uikitopengles.m	2008-07-17 22:32:16 UTC (rev 3730)
@@ -0,0 +1,92 @@
+/*
+ *  SDL_uikitopengles.c
+ *  iPodSDL
+ *
+ *  Created by Holmes Futrell on 5/29/08.
+ *  Copyright 2008 __MyCompanyName__. All rights reserved.
+ *
+ */
+
+#include "SDL_uikitopengles.h"
+#include "SDL_uikitopenglview.h"
+#include "jump.h"
+#include "SDL_sysvideo.h"
+#include "SDL_loadso.h"
+#include <dlfcn.h>
+
+extern SDL_uikitopenglview *uikitEAGLView;
+extern UIWindow *uikitWindow;
+
+static int UIKit_GL_Initialize(_THIS);
+
+void *
+UIKit_GL_GetProcAddress(_THIS, const char *proc)
+{	
+	/* Look through all SO's for the proc symbol.  Here's why:
+	   -Looking for the path to the OpenGL Library seems not to work in the iPhone Simulator.
+	   -We don't know that the path won't change in the future.
+	*/
+    return SDL_LoadFunction(RTLD_DEFAULT, proc);
+}
+
+int UIKit_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context)
+{
+	[uikitEAGLView setCurrentContext];
+    return 0;
+}
+
+int
+UIKit_GL_LoadLibrary(_THIS, const char *path)
+{
+	/* shouldn't be passing a path into this function */
+    if (path != NULL) {
+		SDL_SetError("iPhone GL Load Library just here for compatibility");
+		return -1;
+    }
+    return 0;
+}
+
+
+void UIKit_GL_SwapWindow(_THIS, SDL_Window * window)
+{
+
+	[uikitEAGLView swapBuffers];
+	
+	/* since now we've got something to draw
+	   make the window visible */
+	[uikitWindow makeKeyAndVisible];
+
+	/* we need to let the event cycle run, or the OS won't update the OpenGL view! */
+	SDL_PumpEvents();
+	
+}
+
+SDL_GLContext UIKit_GL_CreateContext(_THIS, SDL_Window * window)
+{
+	
+	uikitEAGLView = [[SDL_uikitopenglview alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame] \
+						retainBacking: _this->gl_config.retained_backing \
+						rBits: _this->gl_config.red_size \
+						gBits: _this->gl_config.green_size \
+						bBits: _this->gl_config.blue_size \
+						aBits: _this->gl_config.alpha_size \
+						depthBits: _this->gl_config.depth_size];
+
+	[uikitWindow addSubview: [uikitEAGLView autorelease]];
+	uikitEAGLView.multipleTouchEnabled = YES;
+	
+	if ( UIKit_GL_MakeCurrent(_this, window, NULL) < 0 ) {
+        //Cocoa_GL_DeleteContext(_this, context);
+        return NULL;
+    }
+		
+	return [uikitEAGLView context];
+}
+
+void UIKit_GL_DeleteContext(_THIS, SDL_GLContext context)
+{
+	
+	return;
+}
+
+




More information about the commits mailing list