gl.glBindTexture(GL.GL_TEXTURE_2D, staticTextureIDs[CA_TEXTURE_DROPLET]); gl.glEnable(GL.GL_TEXTURE_2D);
dropletTex.bind(); dropletTex.enable();
  private synchronized void drawDroplets(GL gl) {    gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB);    gl.glDisable(GL.GL_VERTEX_PROGRAM_ARB);    gl.glActiveTexture(GL.GL_TEXTURE0);    gl.glBindTexture(GL.GL_TEXTURE_2D, staticTextureIDs[CA_TEXTURE_DROPLET]);    gl.glEnable(GL.GL_TEXTURE_2D);    gl.glActiveTexture(GL.GL_TEXTURE1);    gl.glDisable(GL.GL_TEXTURE_2D);    gl.glBlendFunc(GL.GL_ONE, GL.GL_ONE);    gl.glEnable(GL.GL_BLEND);    gl.glBegin(GL.GL_QUADS);    gl.glColor4f(1, 1, 1, 1);    for (Iterator iter = droplets.iterator(); iter.hasNext(); ) {      Droplet droplet = (Droplet) iter.next();      // coords in [-1,1] range      // Draw a single quad to the texture render target      // The quad is textured with the initial droplet texture, and      //   covers some small portion of the render target      // Draw the droplet             gl.glTexCoord2f(0, 0); gl.glVertex2f(droplet.rX() - droplet.rScale(), droplet.rY() - droplet.rScale());      gl.glTexCoord2f(1, 0); gl.glVertex2f(droplet.rX() + droplet.rScale(), droplet.rY() - droplet.rScale());      gl.glTexCoord2f(1, 1); gl.glVertex2f(droplet.rX() + droplet.rScale(), droplet.rY() + droplet.rScale());      gl.glTexCoord2f(0, 1); gl.glVertex2f(droplet.rX() - droplet.rScale(), droplet.rY() + droplet.rScale());              }    gl.glEnd();    gl.glDisable(GL.GL_BLEND);  }