徐州软件开发网、徐州程序员、徐州程序员招聘求职、徐州软件企业推荐、 软件项目交易。点击注册加入我们,进入论坛发布消息

【行动胜于雄辩】徐州程序员交流QQ群:324379(一群,满)1182709(二群).进群请先看公告! 招聘求职请先在本站'招聘\求职区'发布,只在群里发布的,将被请出程序员交流群! 谢谢合作

本主题共有 0 篇回复,最新回复发表于 10-11-2009 22:19,作者 xzsdn_08
页 1 / 1 (1 项)
帖子排序: 上一主题 下一主题
  • 10-11-2009 22:19

    • xzsdn_08
    • 灌水10强
      男
    • 注册时间 01-04-2009
    • 江苏徐州
    • 发帖总数 641

    游戏是这样写成的 (第一篇: 建立 OpenGL ES 项目)

    作者: dr_watson

    看了些大家在论坛的讨论, 似乎有不少同学有意用 OpenGL ES 写游戏, 但又好像不知道从那方面入手, 所以我决定为 cocoachina.com 写几篇教程, 和大家分享一下我在这方面的经验, 希望对大家有点帮助, 也顺便推广一下 OpenGL ES 的应用! 

    不过大家要注意的是, 这个教程所想包含的, 只是OpenGL ES 的入门和怎么利用它写 2D 游戏, 至于本教程标题, 只是哗众取巧之作, 不能期望有什么高深的学问呢 :).

     

    让我们转入正题吧!在官方 SDK 建立一个 OpenGL ES 的项目非常简单, 只要选择”New Project”, 然后用” Cocoa Touch OpenGL Application” 的模版就可以了:

     

     

     

    这时只要我们”Build and Go”, 就会看到一个旋转的彩色四方形.

     

     

    这时我们会发现屏幕上面有一个不大好看的Status Bar, 要把它弄掉,可以在info.plist 里加上下面这句:

     

     

     

    有了基本的东西, 接下来怎么做呢? 非常幸运的是SDK 提供了不少例子可供我们利用, 我们下载和打开 CrashLanding 看看, 项目里有几个档案我们可以拿来借用一下 :

     

     

     

     

    我们把 Texture2D.h, Texture2D.m, OpenGL_Internal.h 拖拉到我们的 Classes 里 (记得选”Copy items…”) :

     

     

     

    Texture2D非常好用,我们不只可以用它加载贴图, 更可以用它把贴图画上屏幕当为sprite 用, 这个不正是我们写游戏所需要的基本功能吗? 爽!

     

    但在没编译前,我们还有一件事要做:把 CoreGraphics.framework 加到我们的 Frameworks !

     

     

    跟着我们要把 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)];

     

     

    看看我们的成果!很漂亮的画面啊!呵呵。。。这篇就写到这里,有时间再继续写下一篇。

     

     

    注意:项目要用SDK Beta6编译!

     

    标签:,
页 1 / 1 (1 项)
徐州软件开发网、徐州软件开发社区、徐州程序员
© Copyright 2008-2011 XZSDN.NET   Powered By communityserver   站长博客 我的Blog
苏ICP备09002379号 | 意见反馈 | 联系我