public void glInit(GeometryViewer viewer, GL gl, GLU glu) {
    surface = getNewSurface();

    float mat_diffuse[] = {0.7f, 0.7f, 0.7f, 1.0f};
    float mat_specular[] = {1.0f, 1.0f, 1.0f, 1.0f};
    float mat_shininess[] = {100.0f};

    gl.material(FRONT, DIFFUSE, mat_diffuse);
    gl.material(FRONT, SPECULAR, mat_specular);
    gl.material(FRONT, SHININESS, mat_shininess);

    gl.enable(LIGHTING);
    gl.enable(LIGHT0);
    gl.enable(DEPTH_TEST);
    gl.enable(AUTO_NORMAL);
    gl.enable(NORMALIZE);

    initSurface();

    surface.nurbsProperty(GLU_SAMPLING_TOLERANCE, 25.0f);
    surface.nurbsProperty(GLU_DISPLAY_MODE, GLU_FILL);
  }