{ final GLUtessellatorCallback callback = new GLUtessellatorCallbackAdapter() { private volatile Handler handler; @Override public void begin(int type) { switch (type) { case GL.GL_TRIANGLES: handler = triangleHandler; break; case GL.GL_TRIANGLE_STRIP: handler = triangleStripHandler; break; case GL.GL_TRIANGLE_FAN: handler = triangleFanHandler; break; } } @Override public void vertex(Object index) { handler.index((short) index); } }; GLU.gluTessCallback(tessellator, GLU.GLU_TESS_BEGIN, callback); GLU.gluTessCallback(tessellator, GLU.GLU_TESS_VERTEX, callback); }