2009-05-05 8 views
2

私はiPhone用のOpenGLアプリケーションを書く方法を学んでいます。 OpenGL-ESで動作するように次のコードを移植するにはどうすればよいですか?頂点を配列に格納してglDrawArrays()を呼び出す必要があることは知っていますが、これを行う最適な方法はありますか?私の考えは、非常に大きな配列を作成し、単にいくつのスペースがいっぱいになるかのカウンタを保持することです。これは良いアプローチですか?どのようにNSArrayを使用して、c配列に変換するのですか?OpenGL-ESへのOpenGL - glBegin();

glBegin(GL_LINE_STRIP); 

z = -50.0f; 
for(angle = 0.0f; angle <= (2.0f*3.1415f)*3.0f; angle += 0.1f) 
    { 
    x = 50.0f*sin(angle); 
    y = 50.0f*cos(angle); 

    // Specify the point and move the Z value up a little 
    glVertex3f(x, y, z); 
    z += 0.5f; 
    } 

// Done drawing points 
glEnd(); 

答えて

1

十分なスペースがあり、配列の最大サイズを知っている場合は、1つの大きな静的に割り当てられた配列を使用し、その現在の論理サイズを追跡するのが最も簡単です。

メモリが不足していてもプロセッサリソースが豊富な場合は、アレイを即座にパックしてから配列を登録し、glDrawArrays()を呼び出します。

ハイブリッドアプローチは、(必要に応じて)更新可能な動的に割り当てられた配列を使用することです。動的配列がいっぱいになると再割り当てするか、何らかの並べ替えのNSMutableArrayを使用して手動で行うことができます。 (N.B.にNSArrayは静的配列のためのものである。NSMutableArrays(サブクラス)が動的でSee here.。)これは:)

を助け

ホープ

1

古典的なスピード/メモリのトレードオフのようなサウンドです。メモリが非常に不足している場合は、動的なデータ構造を使用してみてください。もしあなたが配列の大きさに妥当な範囲を持っていて、その式からあなたが必要とするバーツ数を正確に知っていれば、提案したような普通の静的配列を使ってください。

あなたが配列について知っているように見えますが、配列を描画するので、私はそれには触れません。

幸運を祈る!

関連する問題