2012-04-04 6 views
1

複数のボールが画面の周りを移動するようにするには、次の手順を実行しますが、1つのボールのみが表示され、機能するように見えます。残りの(カウント-1)ボールが、私は私の上でスナップショットを取るcouldntのOpenGL ES複数のオブジェクトがレンダリングされない

public void onDrawFrame(GL10 gl) { 
      // TODO Auto-generated method stub 
      gl.glDisable(GL10.GL_DITHER); 
      gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 
      gl.glMatrixMode(GL10.GL_MODELVIEW); 
      gl.glClientActiveTexture(DRAWING_CACHE_QUALITY_HIGH); 
      gl.glLoadIdentity(); 
      for(int i=0;i<mParticleSystem.getParticleCount();i++){ 
       gl.glPushMatrix(); 
         gl.glTranslatef(mParticleSystem.getPosX(i), mParticleSystem.getPosY(i), -3.0f); 
         gl.glScalef(0.3f, 0.3f, 0.3f); 
         gl.glColor4f(r.nextFloat(), r.nextFloat(), r.nextFloat(), 1); 
         gl.glEnable(GL10.GL_TEXTURE_2D); 
         mParticleSystem.getBall(i).draw(gl); 
       gl.glPopMatrix(); 

      } 


     } 

EDITマイ無効ドロー(GL10 GL)メソッド

public void draw(GL10 gl){ 

    gl.glEnable(GL10.GL_CULL_FACE); 
    gl.glEnable(GL10.GL_SMOOTH); 
    gl.glEnable(GL10.GL_DEPTH_TEST); 
// gl.glTranslatef(0.2f, 0.2f, -3.0f); 
// gl.glScalef(size, size, 1.0f); 

    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertBuff); 
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
    gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, points/2); 
    gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); 

} 

を描かれていない理由を私は知りませんサムスンの電話がここにエミュレータのスクリーンショットです。実際には、ボールは方向と加速度の変化に伴って動き回り、(r.nextFLoat()のために)ランダムに色を変え続けます。しかし、他の35個のボールはあなたが見ることができるようにレンダリングされていません。これをどうすれば解決できますか?これはgl.glDisableClientState(GL10.GL_VERTEX_ARRAY)と呼ばれている

enter image description here

+0

mParticleSystem.getBall(i).draw(gl)コードを記述することはできますか?その中で何かを無効にしていますか? – SteveL

+0

@SteveLが私の答えを更新しました。 – jmishra

+0

よく私はあなたのMyGLBallクラスのMyGLBall.draw(GL10 gl)メソッドを意味しました – SteveL

答えて

1

;,ループが戻ってくる二度目はgl.glEnableClientState(GL10.GL_VERTEX_ARRAY)を持っている必要があります。そうでなければ何も描画されません。

私はあなたにgl.glEnableClientState(GL10.GL_VERTEX_ARRAY)があると思います。あなたはonsurfacecreated()にいます。この手段は一度だけ呼び出されます。一方、gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);無限に呼ばれています。

+0

もう少し見ると、彼はglDrawElementsの前にその行を有効にしています。 – Tim

関連する問題