我做以下,以使多個球在屏幕上移動,但只有1球是看到出現和功能。我不知道爲什麼,其餘(計數1)球未被繪製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();
}
}
編輯我的無效消耗(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個球甚至沒有被渲染,你可以看到。我怎樣才能解決這個問題?
你能寫mParticleSystem.getBall(I).draw(GL)代碼?,你在禁用它什麼? – SteveL 2012-04-04 11:54:10
@SteveL更新了我的答案。 – jmishra 2012-04-04 12:07:38
以及我在你MyGLBall類 – SteveL 2012-04-04 12:11:23