2011-11-01 54 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