游戏是这样写成的 (第一篇: 建立 OpenGL ES 项目)
2012-02-03 14:59
281 查看
看了些大家在论坛的讨论, 似乎有不少同学有意用 OpenGL ES 写游戏, 但又好像不知道从那方面入手, 所以我决定为 cocoachina.com 写几篇教程, 和大家分享一下我在这方面的经验, 希望对大家有
![](http://www.cocoachina.com/b/wp-content/uploads/game-iphone-cover.png)
看了些大家在论坛的讨论, 似乎有不少同学有意用 OpenGL ES 写游戏, 但又好像不知道从那方面入手, 所以我决定为 cocoachina.com 写几篇教程, 和大家分享一下我在这方面的经验, 希望对大家有点帮助, 也顺便推广一下 OpenGL ES 的应用!
不过大家要注意的是, 这个教程所想包含的, 只是OpenGL ES 的入门和怎么利用它写 2D 游戏, 至于本教程标题, 只是哗众取巧之作, 不能期望有什么高深的学问呢 :).
让我们转入正题吧!在官方 SDK 建立一个 OpenGL ES 的项目非常简单, 只要选择”New Project”, 然后用” Cocoa Touch OpenGL Application” 的模版就可以了:
![](http://www.cocoachina.com/b/wp-content/uploads/igame-template.png)
这时只要我们”Build and Go”, 就会看到一个旋转的彩色四方形.
![](http://www.cocoachina.com/b/wp-content/uploads/igame-sim.png)
这时我们会发现屏幕上面有一个不大好看的Status Bar, 要把它弄掉,可以在info.plist 里加上下面这句:
![](http://www.cocoachina.com/b/wp-content/uploads/igame-fullscreen.png)
有了基本的东西, 接下来怎么做呢? 非常幸运的是SDK 提供了不少例子可供我们利用, 我们下载和打开 CrashLanding 看看, 项目里有几个档案我们可以拿来借用一下 :
![](http://www.cocoachina.com/b/wp-content/uploads/igame-crashlanding.png)
我们把 Texture2D.h, Texture2D.m, OpenGL_Internal.h 拖拉到我们的 Classes 里 (记得选”Copy items…”) :
![](http://www.cocoachina.com/b/wp-content/uploads/igame-dragdrop.png)
Texture2D非常好用,我们不只可以用它加载贴图, 更可以用它把贴图画上屏幕当为sprite 用, 这个不正是我们写游戏所需要的基本功能吗? 爽!
但在没编译前,我们还有一件事要做:把 CoreGraphics.framework 加到我们的 Frameworks !
![](http://www.cocoachina.com/b/wp-content/uploads/igame-framework.png)
跟着我们要把 OpenGL ES 的起始代码改一下, 让我们可以写2D 游戏, 这部份,我们可以在 layoutSubviews 里做:
- (void)layoutSubviews
{
[EAGLContext setCurrentContext:context];
[self destroyFramebuffer];
[self createFramebuffer];
glViewport(0, 0, backingWidth, backingHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, (float)backingWidth, 0, (float)backingHeight, 0, 100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnableClientState (GL_VERTEX_ARRAY);
glEnableClientState (GL_TEXTURE_COORD_ARRAY);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
[self drawView];
}
好了, 做了这么多准备工作, 我们终于来到本篇最精彩的部份: 在屏幕上画图! 我们把想要用到的图拖拉到 Resources 里,就可以在程序里把它们加载应用:
bg = [[Texture2D alloc] initWithImagePath:@"bg.jpg"];
sprites = [[Texture2D alloc] initWithImagePath:@"planet.png"];
这样,我们在 drawView里就可以把图画在屏幕上了!
[bg drawAtPoint: CGPointMake(160.0f, 240.0f)];
[sprites drawAtPoint: CGPointMake(160.0f, 100.0f)];
看看我们的成果!很漂亮的画面啊!呵呵。。。这篇就写到这里,有时间再继续写下一篇。
![](http://www.cocoachina.com/b/wp-content/uploads/igame-screen.png)
注意:项目要用SDK Beta6编译!
本文的例子在此下载。如果你对iPhone游戏的开发有兴趣,请在这里和作者一起讨论OpenGL ES的开发心得。
![](http://www.cocoachina.com/b/wp-content/uploads/game-iphone-cover.png)
看了些大家在论坛的讨论, 似乎有不少同学有意用 OpenGL ES 写游戏, 但又好像不知道从那方面入手, 所以我决定为 cocoachina.com 写几篇教程, 和大家分享一下我在这方面的经验, 希望对大家有点帮助, 也顺便推广一下 OpenGL ES 的应用!
不过大家要注意的是, 这个教程所想包含的, 只是OpenGL ES 的入门和怎么利用它写 2D 游戏, 至于本教程标题, 只是哗众取巧之作, 不能期望有什么高深的学问呢 :).
让我们转入正题吧!在官方 SDK 建立一个 OpenGL ES 的项目非常简单, 只要选择”New Project”, 然后用” Cocoa Touch OpenGL Application” 的模版就可以了:
![](http://www.cocoachina.com/b/wp-content/uploads/igame-template.png)
这时只要我们”Build and Go”, 就会看到一个旋转的彩色四方形.
![](http://www.cocoachina.com/b/wp-content/uploads/igame-sim.png)
这时我们会发现屏幕上面有一个不大好看的Status Bar, 要把它弄掉,可以在info.plist 里加上下面这句:
![](http://www.cocoachina.com/b/wp-content/uploads/igame-fullscreen.png)
有了基本的东西, 接下来怎么做呢? 非常幸运的是SDK 提供了不少例子可供我们利用, 我们下载和打开 CrashLanding 看看, 项目里有几个档案我们可以拿来借用一下 :
![](http://www.cocoachina.com/b/wp-content/uploads/igame-crashlanding.png)
我们把 Texture2D.h, Texture2D.m, OpenGL_Internal.h 拖拉到我们的 Classes 里 (记得选”Copy items…”) :
![](http://www.cocoachina.com/b/wp-content/uploads/igame-dragdrop.png)
Texture2D非常好用,我们不只可以用它加载贴图, 更可以用它把贴图画上屏幕当为sprite 用, 这个不正是我们写游戏所需要的基本功能吗? 爽!
但在没编译前,我们还有一件事要做:把 CoreGraphics.framework 加到我们的 Frameworks !
![](http://www.cocoachina.com/b/wp-content/uploads/igame-framework.png)
跟着我们要把 OpenGL ES 的起始代码改一下, 让我们可以写2D 游戏, 这部份,我们可以在 layoutSubviews 里做:
- (void)layoutSubviews
{
[EAGLContext setCurrentContext:context];
[self destroyFramebuffer];
[self createFramebuffer];
glViewport(0, 0, backingWidth, backingHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(0, (float)backingWidth, 0, (float)backingHeight, 0, 100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnableClientState (GL_VERTEX_ARRAY);
glEnableClientState (GL_TEXTURE_COORD_ARRAY);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
[self drawView];
}
好了, 做了这么多准备工作, 我们终于来到本篇最精彩的部份: 在屏幕上画图! 我们把想要用到的图拖拉到 Resources 里,就可以在程序里把它们加载应用:
bg = [[Texture2D alloc] initWithImagePath:@"bg.jpg"];
sprites = [[Texture2D alloc] initWithImagePath:@"planet.png"];
这样,我们在 drawView里就可以把图画在屏幕上了!
[bg drawAtPoint: CGPointMake(160.0f, 240.0f)];
[sprites drawAtPoint: CGPointMake(160.0f, 100.0f)];
看看我们的成果!很漂亮的画面啊!呵呵。。。这篇就写到这里,有时间再继续写下一篇。
![](http://www.cocoachina.com/b/wp-content/uploads/igame-screen.png)
注意:项目要用SDK Beta6编译!
本文的例子在此下载。如果你对iPhone游戏的开发有兴趣,请在这里和作者一起讨论OpenGL ES的开发心得。
相关文章推荐
- android 游戏导引(1. 建立 OpenGL 项目)
- OpenGL ES系列之0 – 建立Xcode项目
- Mac苹果系统,IOS下cocos2dx建立项目 手游戏
- dr_watson 游戏是这样写成的
- OpenGL ES系列之0 – 建立Xcode项目
- dr_watson 游戏是这样写成的
- 我为什么把 Rocket Through游戏中的Rocket::collideWithSides()写成这样?
- 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第一篇 yocto项目建立
- OpenGL ES系列之0 – 建立Xcode项目
- 几个简单步骤建立Android游戏项目
- 在JBuilder里建立第一个J2ME游戏项目
- OpenGL ES系列之0 – 建立Xcode项目
- Rails 学习笔记第一篇(建立一个玩具项目)
- vici mvc开发第一篇——建立你的项目
- OpenGL ES系列之0 – 建立Xcode项目
- 建立 Android 游戏项目的必备 XxxManifest.xml 配置
- wsdlLocation可以写成项目的相对路劲吗
- 关于使用Visual Studio 2008 建立Setup And Deployment Project(安装与部署项目)制作安装.net 安装程序,插入Custom Actions(自定义动作)的办法
- 在VSS2005中建立工作流项目(1)
- 项目经理是这样当的