"demos/data/cubemaps/CloudyHills_{0}.tga",
"demos/data/cubemaps/CloudyHills_", "tga",
  public void init(GLAutoDrawable drawable) {    water.destroy();    water.initialize("demos/data/images/nvfixed.tga",                      "demos/data/images/nvspin.tga",                      "demos/data/images/droplet.tga",                      "demos/data/cubemaps/CloudyHills_{0}.tga",                     drawable);    GL gl = drawable.getGL();    gl.setSwapInterval(1);    try {      checkExtension(gl, "GL_VERSION_1_3"); // For multitexture      checkExtension(gl, "GL_ARB_vertex_program");      checkExtension(gl, "GL_ARB_fragment_program");      checkExtension(gl, "GL_ARB_pbuffer");      checkExtension(gl, "GL_ARB_pixel_format");    } catch (GLException e) {      e.printStackTrace();      throw(e);    }          gl.glClearColor(0, 0.2f, 0.5f, 0);    gl.glDisable(GL.GL_LIGHTING);    gl.glDisable(GL.GL_DEPTH_TEST);    gl.glDisable(GL.GL_CULL_FACE);    doViewAll = true;    if (firstRender) {      firstRender = false;      // Register the window with the ManipManager      ManipManager manager = ManipManager.getManipManager();      manager.registerWindow(drawable);      this.drawable = drawable;      viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons());      viewer.setAutoRedrawMode(false);      viewer.attach(drawable, new BSphereProvider() {          public BSphere getBoundingSphere() {            return new BSphere(new Vec3f(0, 0, 0), 1.2f);          }        });      viewer.setVertFOV((float) (15.0f * Math.PI / 32.0f));      viewer.setZNear(zNear);      viewer.setZFar(zFar);      drawable.addKeyListener(new KeyAdapter() {          public void keyPressed(KeyEvent e) {            dispatchKey(e.getKeyChar());          }        });      drawable.addMouseListener(new MouseAdapter() {          public void mousePressed(MouseEvent e) {            if (e.getButton() == MouseEvent.BUTTON1 &&                !e.isAltDown() && !e.isMetaDown()) {              drawing = true;            }          }          public void mouseReleased(MouseEvent e) {            if (e.getButton() == MouseEvent.BUTTON1) {              drawing = false;            }          }        });      drawable.addMouseMotionListener(new MouseMotionAdapter() {          public void mouseDragged(MouseEvent e) {            mousePosX = e.getX();            mousePosY = e.getY();          }                    });      timer.start();    }  }