2011-11-01 55 views
1

我目前正在开发我的第一款使用openGLES的iPhone游戏 - 非常棒!爱它的每一分钟。不过,我有几个问题:OpenGL ES/iPhone开发问题 - 第一款游戏

  1. 我想制作一个粒子系统 - 这样做的最快方法是什么?我会想象我可以制作一个可变的粒子对象数组,然而每个粒子都必须从NSObject派生,对吗?这看起来似乎有相当多的开销..有没有更好的方法?在过去,使用C++我已经使用了一个极其简单的粒子对象向量,并将死亡粒子交换到最后,并在需要新粒子时重用这些粒子 - 我在这里可能会做同样的事情。只是担心(可能是不公正的)效率。

  2. 如何更改OpenGL的坐标系统,使我可以使用0-screensize作为单位而不是默认的-1到1? (例如,使用点{-1,0,0,1,0,0,0,1,0}的简单顶点列表将生成一个三角形,其中斜边沿着整个中心水平轴延伸)

  3. 它看起来好像我不能在1.1中使用着色器,但2.0使用它们为所有的东西有什么理由让我坚持1.1?

  4. 是否有充分的理由在OpenGL中完全创建我的GUI?或者我能够很好地使用标准系统? (比如用GUI元素创建一个xib文件)

  5. 因为我刚刚开始,通常伴随着OpenGL ES的常见缺陷?我并不打算让这是开放式的,我试图根除任何具体的东西,使规范的许多新用户绊倒。

+0

你有没有考虑使用类似的Cocos2D的框架? – Lukman

+0

当然 - 我对框架没有任何反应。我通常比较厚实,喜欢自己推出......但我现在不太清楚规格,所以像cocos2d这样的东西可能是个好主意。 – ultifinitus

+0

我应该把这个问题分解成多个吗? – ultifinitus

回答

2
  1. 我用普通的C结构矿山,NSObjects是猪在这种情况下,在3G,我可以得到2000个颗粒没有问题,C的结构,小于200的对象。
  2. 像这样的事情会得到你小480x320坐标系:

    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    CGRect rect = self.view.bounds; 
    if (highRes && (retina == 1)) { 
        glOrthof(0.0, rect.size.width/2, 0.0 , rect.size.height/2, -1, 1000.0); 
    } else { 
        glOrthof(0.0, rect.size.width, 0.0 , rect.size.height, -1, 1000.0);  
    } 
    
  3. 只支持旧设备< 3GS。
  4. 取决于你想要的外观和工作。如果你需要文本输入,记住你必须在openGL中从头开始,也可以使用字体渲染等。有时你可以混合使用(比如打开一个抽屉与你的文本框等),但是当混合opengl上发生的事情必须是很简单。
  5. 很多陷阱,更好地得到一个很好的教程,所以你有基本的涵盖,从设置你的看法,以建立一个模型纹理,然后你可以参考它,如果出现错误。

运气好,使它成为一个好玩的游戏:-)

+0

哈哈,感谢您的回复 - 我已经弄清楚了一切,除了我想用粒子做什么之外,我感谢它! (哦,这已经很让人上瘾了,我花更多的时间玩这个愚蠢的游戏而不是做它!) – ultifinitus