0

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

我在 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);” 意味着确实使用 VolcanoBackground.java 中的类,而 p.draw(gl); 旨在使用 VolcanoParticle.java。但是由于某种原因, VolcanoParticle.draw 也影响了 background.draw 导致背景也具有与粒子相同的运动和颜色变化/重力/运动。

关于如何解决的任何想法?

同样使用 background.draw 它使粒子很难看到,就好像在它们的顶部有一个黑色的裹尸布,有没有办法移除这个 alpha 层或者它是什么或者强制背景在粒子后面?

4

1 回答 1

0

也许您需要在绘制每个对象之间通过调用 glLoadIdentity() 来重置模型视图矩阵。

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

于 2013-06-14T05:12:01.910 回答