Since GL4Java 2.2.0, tesselation is supported ! ================================================ Please look in the sources and/or javadoc of: gl4java.GLUTFunc There exist also many demos: demos/MiscDemos/tess demos/MiscDemos/tessdemo demos/MiscDemos/tesswind DETAILS ======= The native callback manager of GL4Java seeks the callback function with: - callback method-type (the "which" argument of the Callback function) - the current gl-context Because the callback manager functions do not know the tessellator/nurbs/quadratics id, only ONE callback-method for one gl-context and "which"-method is supported !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Tesselation FAQ: ================= Jean-Yves BRUD asked: > What is the meaning of parameter signature ? > If my callback method name is myVertexCallBack (for a GLU_TESS_VERTEX > callback), > what is the value of the signature parameter ? public void gluTessCallback( int tobj, int which, Object methodClassInstance, String methodName, String signature, int voidArrayLen1, int voidArrayLen2, int voidArrayLen3, int voidArrayLen4, int voidArrayLen5 ); Example (tessdemo.java line 337): glu.gluTessCallback ( tobj, GLU_TESS_VERTEX, gl, "glVertex2fv", "([F)V", 2, 0, 0, 0, 0); The signature "([F)V" is the original java style signature of the argument-list, your callback method takes (here: glVertex2fv) ! void glVertex2fv( const GLfloat v[2] ) (...) := within the brackets are function arguments signature part [F := float array V := void - the signature part after the brackets means the return value Read SUN's Java Documentation for Java-Callback methods: http://java.sun.com/docs/books/tutorial/native1.1/implementing/method.html Here you can find the mapping of function arguments to its corresponding string signature representation ! Jean-Yves BRUD asked: > > What is the meaning of the 5 parameters: voidArrayLen1, voidArrayLen2, > voidArrayLen3, > voidArrayLen4, voidArrayLen5, and what value do I need to put ? > public void gluTessCallback( int tobj, int which, Object methodClassInstance, String methodName, String signature, int voidArrayLen1, int voidArrayLen2, int voidArrayLen3, int voidArrayLen4, int voidArrayLen5 ); The maximum number of arrays within the argumentlist of a GLU Callback function for Tesselation is 5 ! So, the arguments voidArrayLen[1-5] refines the expected size of the arrays, which are passed into and from the java callback funtion. OpenGL-Machine <-> GL4Java-Callback-Handler <-> Java-Callback-Method E.g. (tessdemo.java): glu.gluTessCallback ( tobj, GLU_TESS_COMBINE, this, "combine_callback", "([D[D[F[F)V", 2, 0, 0, 2, 0); public void combine_callback( double coords[/*3*/], double vertex_data[/*4xn(=0)*/], float weight[/*4*/], float[/*m(=2)*/] data ) { data[0] = (float) coords[0]; data[1] = (float) coords[1]; } You can see, we do use the arrays "data" and "coords" with a size of 2 ! You are not allowed to use nonsense sizes, because this can hurt your application with a segementation fault ! (Well the GL4Java Callback functions checks the array sizes to OpenGL's maximum, .. but be kind of ..) The OpenGL machine calls GL4Java's callback function, which dispatches the call (incl. data) to your java callback function ! Sven Goethel http://www.jausoft.com 8th February 2001