Android OpenGL ES覆盖背景

时间:2013-05-23 20:08:23

标签: android opengl-es

我目前正试图让一个粒子喷泉喷出随机粒子覆盖在火山背景(纹理四边形)的顶部。

我有火山背景和粒子在onDrawFrame中绘制语句

public void onDrawFrame(GL10 gl)
{

    // Set the clear colour to red and clear the screen
    gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    // Enable the vertex array client state
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    background.draw(gl);
    // Draw then update the position of all particles


    for (VolcanoParticle p : particleArray)
    {
        p.draw(gl);
        p.update();
    }

    //background.draw(gl);
    // Disable the vertex array client state before leaving
    gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
}

}

“background.draw(gl);”意思是在p.draw(gl)中使用VolcanoBackground.java中的类。意在使用VolcanoParticle.java。但由于某种原因,VolcanoParticle.draw也影响了background.draw,导致背景也具有与粒子相同的运动和颜色变化/重力/运动。

关于如何修复的任何想法?

同样使用background.draw它会让粒子很难看到它们顶部有一个黑色的护罩,有没有办法去除这个alpha层或者它是什么或强迫背景落后粒子?

1 个答案:

答案 0 :(得分:0)

也许您需要在绘制每个对象之间重新设置模型 - 视图矩阵,方法是调用它们上的glLoadIdentity()。

关于调光问题,请尝试禁用照明。如果这是问题所在,那么您可能需要将灯移近模型。