Especificar devoluciones de llamada
Puede especificar hasta cinco funciones de devolución de llamada para una teselación. No se llama a las funciones que no se especifican durante la teselación, de modo que no se obtiene la información que podrían haber devuelto. Las funciones de devolución de llamada se especifican con gluTessCallback.
La función gluTessCallback asocia la función de devolución de llamada fn con el objeto de teselación tessobj. El tipo de devolución de llamada viene determinado por el parámetro type, que puede ser GLU_BEGIN, GLU_EDGE_FLAG, GLU_VERTEX, GLU_END o GLU_ERROR. Las cinco posibles funciones de devolución de llamada tienen los siguientes prototipos.
Función de devolución de llamada | Prototipo |
---|---|
GLU_BEGIN | void begin(GLenumtype ); |
GLU_EDGE_FLAG | void edgeFlag(GLbooleanflag ); |
GLU_VERTEX | void vertex(**void ***data ); |
GLU_END | void end( void ); |
GLU_ERROR | void error(GLenumerrno ); |
Para cambiar una función de devolución de llamada, llame a gluTessCallback con la nueva función. Para eliminar una función de devolución de llamada sin reemplazarla por una nueva, pase a gluTessCallback un puntero nulo para la función adecuada.
A medida que continúa la teselación, las funciones de devolución de llamada se llaman de forma similar al procedimiento que se usa para llamar a las funciones glBegin, glEdgeFlag, glVertex y glEnd de OpenGL.
La función de devolución de llamada GLU_BEGIN se invoca con uno de los tres parámetros posibles:
- GL_TRIANGLE_FAN
- GL_TRIANGLE_STRIP
- GL_TRIANGLES
Después de llamar a la función de devolución de llamada GLU_BEGIN y antes de llamar a la función de devolución de llamada asociada a GLU_END, se invoca una combinación de las devoluciones de llamada GLU_EDGE_FLAG y GLU_VERTEX. Los vértices y las marcas de borde asociados se interpretan exactamente como están en OpenGL entre glBegin(GL_TRIANGLE_FAN), glBegin(GL_TRIANGLE_STRIP) o glBegin(GL_TRIANGLES**)** y el glEnd coincidente.
Dado que las marcas de borde no tienen sentido en un abanico de triángulos o una tira de triángulos, si hay una función de devolución de llamada asociada con GLU_EDGE_FLAG, la devolución de llamada GLU_BEGIN solo se llama con GL_TRIANGLES. La función de devolución de llamada GLU_EDGE_FLAG funciona de forma análoga a la función glEdgeFlag de OpenGL.
Si se produce un error durante la teselación, se invoca la función de devolución de llamada de error. Se transfiere un número de error de GLU a la función de devolución de llamada de error. Puede obtener una cadena de caracteres que describa el error con la función gluErrorString.