如何为iOS5创建一个简单GLKit应用程序
2011-10-25 16:53
429 查看
***************************************************************************申明:本系列教程原稿来自网络,翻译目的仅供学习与参看,请匆用于商业目的,如果产生商业等纠纷均与翻译人、该译稿发表人无关。转载务必保留此申明。内容: How to start an empty GLKit application for iOS 5原文地址:http://games.ianterrell.com/how-to-start-an-empty-glkit-application-for-ios-5/译文地址:http://blog.csdn.net/favormm/article/details/6904242***************************************************************************本教程是2D游戏引擎教程的序,但对于任何一个刚步入iOS世界,想用Xcode4开发GLKit相关应用的人,本教程都有抛针引线的作用。其中大部份内容都是摘取自我的另一篇教程“学习iOS5中GLKit关于OpenGL的基本用法”,那篇教程绘制了一个3D立方体,很值得一读。用XCode创建一个新的iOS应用,模版选择“Empty Application”。取个工程名(我将要编写一个游戏引擎,所以我命名为"ExampleEngine"),保持默认选择(如果是编写一个库,那在类前最好有个前缀,我用的是“EE”),保存。接着我们添加OpenGL与GLKit相关frameworks。点击左上角的工程,然后选中TARGETS下你的target,再选中Build Phases栏,在“Link Binary With Libraries”中加入GLKit, OpenGLES,QuartzCore这三个framework。完成后,你将会在工程中看到你加入的framework,当然你也可以用拖的方式将其拖入Frameworks分组下。确保你选择的是模拟器(如果你有开发者帐号,你可以用合法的provisioning profile来真机调试,于是你可以选择device),按⌘B确保可以正确编译。在AppDelegate头文件里引入GLKit头文件,这样就可以调用GLKit中的方法。
// AppDelegate.h #import <UIKit/UIKit.h> #import <GLKit/GLKit.h> ...GLKit了类化了UIView与UIViewController,利用它们将方便我们把OpenGL场景集成到我们的应用中。两个类都是用代理(苹果Objective-C库中一种非常通用的设计模式)的计设模式嵌入到我们的应用代码中。我们要用AppDelegate作为GLKit的代理,因此得告诉编译器AppDelegate会实现代理协议。
// AppDelegate.h ... @interface AppDelegate : UIResponder <UIApplicationDelegate, GLKViewDelegate, GLKViewControllerDelegate> ...现在来创建场景。将application:didFinishLaunchingWithOptions:这个方法用下面代码替换:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { EAGLContext *context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; [EAGLContext setCurrentContext:context]; GLKView *view = [[GLKView alloc] initWithFrame:[[UIScreen mainScreen] bounds] context:context]; view.delegate = self; GLKViewController *controller = [[GLKViewController alloc] init]; controller.delegate = self; controller.view = view; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = controller; [self.window makeKeyAndVisible]; return YES; }第3,4行创建OpenGL绘制时需要的上下文。第6,7行设置绘制场景的view。第6行,由OpenGL上下文创建屏幕大小的view。第7行指明view的代理为AppDelegate。这样绘制每一帧的时候就会调用glkview:drawInRect:这个方法。第9-11行,创建GLKViewController,并指明其代理类与view。代理方法中我们主要关心
glkViewControllerUpdate:第13-15行,将我们的controller与"window"关联,以便显示。第17行通知OS我们的应用已启动完成。现在代理方没还没实现所以有警告提示,但是也可以运行。运行后,你会看到纯色的背景,看一看吧!现在我们把这些警告去掉交改背景为灰色。在the
application:didFinishLaunchingWithOptions:方法下面实现如下代理方法:
- (void)glkViewControllerUpdate:(GLKViewController *)controller { // NSLog(@"in glkViewControllerUpdate"); } - (void)glkView:(GLKView *)view drawInRect:(CGRect)rect { // NSLog(@"in glkView:drawInRect:"); glClearColor(0.5, 0.5, 0.5, 0.5); glClear(GL_COLOR_BUFFER_BIT); }
现在再运行,你会看到灰色背景,由gl开头的API实现的。在OpenGL与GLKit中,颜色由四个分量组成,分别是红,绿,蓝与alpha(透明度),每一个分量取值范围是[0,1]。
如果你打开上面代码中的NSLog注释,你会在控制台看到如下打印。这儿有两个方法,因为GLKit基于state与presentation的(类似于MVC的设计模式或HTML/CSS分开发设计)。State(动画,物理模拟,游戏逻辑)应在glkViewControllerUpdate:这回调中,而glkView:drawInRect应用来绘制场景的。源码下载:empty-glkit
相关文章推荐
- 如何为iOS5创建一个简单GLKit应用程序
- 如何创建一个最简单的Windows桌面应用程序 (C++)
- 如何利用CEF3创建一个简单的应用程序 (Windows Platform)
- 如何使用 CoreText 创建一个简单的杂志应用
- 如何创建一个登陆窗口,在visual webgui应用程序中!(视频)
- 如何使用C#创建一个三层的数据库应用程序
- 创建一个简单的Linq数据库应用程序
- mysql 如何创建一个简单的存储过程
- 如何使用 CoreText 创建一个简单的杂志应用
- 创建CEGUI窗口入门——讲述如何创建一个简单的CEGUI窗口
- C# 创建、部署和调用WebService的简单示例 webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互。 概念性的东西就不说太多,下面开始创建一个简单的webservi
- IOS开发之小实例--使用UIImagePickerController创建一个简单的相机应用程序
- 用UDP实现可靠文件传输,如何利用UDX创建一个简单的WIN32程序
- 【nodejs】新手如何一步步创建一个简单的express项目
- 如何使用C#创建一个三层的数据库应用程序
- 如何在Magento(麦进斗)中创建一个简单的“Hello World”模块?
- 如何创建一个 Windows 服务应用程序的安装项目在 Visual C# 中
- 如何用Intelij IDEA创建一个简单的Web项目?
- Cocos2d-android (01) 创建一个简单的cocos2d应用程序
- s60 python 编程指南—— 如何创建一个应用程序