2012-04-04 11 views
1

Ich mache das folgende, um mehrere Bälle um den Bildschirm zu bewegen, sondern nur 1 Ball zu sehen und zu funktionieren gesehen wird. Ich weiß nicht, warum der Rest (count-1) Kugeln sind nichtOpenGL ES mehrere Objekte werden nicht gerendert

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 Meine Leere draw (GL10 gl) Methode

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); 

} 

Ich konnte nicht auf die Erstellung eines Snapshots gezogen wird meine Samsung Phone aber hier ist der Emulator Screenshot. In der Realität bewegt sich der Ball mit wechselnder Ausrichtung und Beschleunigung und ändert seine Farbe nach dem Zufallsprinzip (aufgrund von r.nextFLoat()). Die anderen 35 Bälle werden jedoch nicht einmal gerendert, wie Sie sehen können. Wie kann ich das beheben?

enter image description here

+0

Kannst du den mParticleSystem.getBall (i) .draw (gl) -Code schreiben?, Deaktivierst du irgendwas darin? – SteveL

+0

@SteveL aktualisiert meine Antwort. – jmishra

+0

Nun ich meinte die MyGLBall.draw (GL10 gl) -Methode in Ihrer MyGLBall-Klasse – SteveL

Antwort

1

Wenn diese gl.glDisableClientState (GL10.GL_VERTEX_ARRAY) aufgerufen ;, das zweite Mal die Schleife zurück kommt sollte gl.glEnableClientState (GL10.GL_VERTEX_ARRAY) haben; sonst wird nichts anderes gezeichnet.

Ich wette, Sie haben gl.glEnableClientState (GL10.GL_VERTEX_ARRAY); in dir onsurfacecreated(). Dies bedeutet, dass nur einmal aufgerufen wird. Während gl.glDisableClientState (GL10.GL_VERTEX_ARRAY); wird unendlich genannt.

+0

Schau ein wenig näher, er aktiviert es die Zeile vor glDrawElements. – Tim

Verwandte Themen