private void sphere_fill_draw_stack () {
    float ds = 1.0f / slices;
    float dt = 1.0f / stacks;    
    int imin = 1;
    int imax = stacks - 1;

    float t = 1.0f;
    for (int i=imin; i<imax; i++, t-=dt) {
      double rho = i * drho;
      float s = 0.0f;
      gl.begin (GL.QUAD_STRIP);
      
      for (int j=0; j<=slices; j++, s+=ds) {
        double theta = j == slices ? 0.0f : j * dtheta;
        sphere_fill_draw_slice (theta, rho); // vs. rho+drho
        if (texture) gl.tex_coord2f (s, t);

        sphere_fill_draw_slice (theta, rho+drho); // vs. rho
        if (texture) gl.tex_coord2f (s, t-dt);
      }

      gl.end ();
    }
  }