Compartir a través de


Especificar el polígono que se va a teselar

Especifique un polígono (posiblemente con orificios) que se va a teselar mediante:

Para polígonos sin agujeros, el proceso de especificación es exactamente igual que en OpenGL:

  1. Comience con gluBeginPolygon.
  2. Llame a gluTessVertex para cada vértice del límite.
  3. Finalice el polígono con una llamada a gluEndPolygon.

Si un polígono consta de varios contornos, incluidos agujeros y agujeros dentro de los agujeros, se especifican los contornos uno después del otro, precedido por gluNextContour. Cuando llamas a gluEndPolygon, señala el final del contorno final e inicia la teselación. Puede omitir la llamada a gluNextContour antes del primer contorno. La función gluBeginPolygon comienza la especificación de un polígono que se va a teselar y asocia un objeto de teselación, tessobj, con él. Las funciones de devolución de llamada que se van a usar son las que se enlazan al objeto de teselación con gluTessCallback.

La función gluTessVertex especifica un vértice en el polígono que se va a teselar. Llame a gluTessVertex para cada vértice del polígono. El parámetro tessobj de la función es el objeto de teselación que se va a usar, v contiene las coordenadas de vértice tridimensional y los datos son un puntero arbitrario que se envía a la devolución de llamada asociada a GLU_VERTEX. Normalmente, los datos contienen datos de vértices, coordenadas de textura, información de color o cualquier otra cosa que requiera la aplicación.

La función gluNextContour marca el principio del siguiente contorno cuando varios contornos componen el límite del polígono que se va a teselar. El parámetro de tipo de la función puede ser GLU_EXTERIOR, GLU_INTERIOR, GLU_CCW, GLU_CW o GLU_UNKNOWN. Estas constantes solo sirven como sugerencias para la teselación. Si los consigues bien, la teselación puede ir más rápido. Si se equivocan, se omiten y la teselación sigue funcionando.

Para un polígono con agujeros, un contorno es el contorno exterior, y los demás son interiores. Si no llamas a gluNextContour inmediatamente después de gluBeginPolygon, se supone que el primer contorno es de tipo GLU_EXTERIOR.

GLU_CW y GLU_CCW indican polígonos orientados a las agujas del reloj y a las agujas del reloj. Elegir cuáles son las agujas del reloj y que son en sentido contrario a las agujas del reloj es arbitraria en tres dimensiones, pero en cualquier plano, hay dos orientaciones diferentes; use los tipos GLU_CW y GLU_CCW de forma coherente. Use GLU_UNKNOWN si no sabe qué usar.

La función gluEndPolygon indica el final de la especificación del polígono. También indica que la teselación puede empezar a usar el objeto de teselación tessobj.