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

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

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

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

    游戏是这样写成的(第四篇:缩放和混色)

    作者: Cocoa China

    目前dr_watson为Cocoachina读者带来的原创优秀教学《游戏是这样写成的》系列文章已经发表了三篇,给广大iPhone开发者在游戏开发方面以极大的帮助。今天给读者们带来第四篇:缩放和混色,相信同样会让广大iPhone开发者受益非浅。

    《游戏是这样写成的》iPhone游戏开发系列教学,作者:dr_watson,优秀iPhone游戏CubicMan开发者。

    第一篇: 建立 OpenGL ES 项目
    第二篇: 混合 C/C++/Obj-C 的应用
    第三篇: 简单的游戏框架

    cocoachina.com专稿,如需转载请提前联系。

    在群里有同学们为了怎样用OpenGL ES缩放图像而烦恼,正好我也很久没更新这个教程了,所以把第三篇的代码更新了一下,加了缩放和混色功能。

    我也用了SDK Final的模块,重新建立了一次项目。

    这次的修改,主要是CCSprite的render,大家可以参考一下,怎么用glScalef来做缩放。

    1. void CCSprite::render(float x, float y, float angle, float xScale, float yScale)
    2. {
    3.     y = SCREEN_HEIGHT-y;        // for OpenGL ES, (0,0) is at lower left corner!
    4.    
    5.     GLfloat _minU = mX/mTexture->getTextureWidth();
    6.     GLfloat _maxU = (mX+mWidth)/mTexture->getTextureWidth();
    7.     GLfloat _minV = mY/mTexture->getTextureHeight();
    8.     GLfloat _maxV = (mY+mHeight)/mTexture->getTextureHeight();
    9.    
    10.     GLfloat    coordinates[] =
    11.     {
    12.         _minU,    _maxV,
    13.         _maxU,    _maxV,
    14.         _minU,    _minV,
    15.         _maxU,    _minV
    16.     };
    17.    
    18.     GLfloat    xx = - mWidth/2;
    19.     GLfloat yy = - mHeight/2;
    20.    
    21.     GLfloat    vertices[] =
    22.     {
    23.         xx,            yy,                
    24.         xx+mWidth,    yy,                
    25.         xx,            yy+mHeight,
    26.         xx+mWidth,    yy+mHeight    
    27.     };
    28.    
    29.     mTexture->bind();
    30.    
    31.     glColor4f(mRed, mGreen, mBlue, mAlpha);
    32.    
    33.     glPushMatrix();
    34.     glTranslatef(x, y, 0.0f);
    35.     glRotatef(angle, 0.0f, 0.0f, 1.0f);
    36.     glScalef(xScale, yScale, 1.0f);
    37.     glVertexPointer(2, GL_FLOAT, 0, vertices);
    38.     glTexCoordPointer(2, GL_FLOAT, 0, coordinates);
    39.     glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
    40.     glPopMatrix();
    41.    
    42.     glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
    43.    
    44. }

    本文例子代码在这里,请登录后下载。

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