Condividi tramite


Specifica del poligono da tassellare

Specificare un poligono (possibilmente contenente fori) da tassellare usando:

Per i poligoni senza fori, il processo di specifica è esattamente come in OpenGL:

  1. Iniziare con gluBeginPolygon.
  2. Chiamare gluTessVertex per ogni vertice nel limite.
  3. Terminare il poligono con una chiamata a gluEndPolygon.

Se un poligono è costituito da più contorni, inclusi fori e fori all'interno di fori, si specificano i contorni uno dopo l'altro, precedendo ognuno di essi da gluNextContour. Quando chiami gluEndPolygon, segnala la fine del contorno finale e avvia la tassellatura. È possibile omettere la chiamata a gluNextContour prima del primo contorno. La funzione gluBeginPolygon inizia la specifica di un poligono da tassellare e associa un oggetto a mosaico, tessobj, con esso. Le funzioni di callback da utilizzare sono quelle associate all'oggetto a mosaico con gluTessCallback.

La funzione gluTessVertex specifica un vertice nel poligono da tassellare. Chiamare gluTessVertex per ogni vertice nel poligono. Il parametro tessobj della funzione è l'oggetto a mosaico da usare, v contiene le coordinate dei vertici tridimensionali e i dati sono un puntatore arbitrario inviato al callback associato a GLU_VERTEX. In genere, i dati contengono dati sui vertici, coordinate di trama, informazioni sul colore o qualsiasi altra operazione necessaria per l'applicazione.

La funzione gluNextContour contrassegna l'inizio del contorno successivo quando più contorni costituiscono il limite del poligono da tassellare. Il parametro di tipo della funzione può essere GLU_EXTERIOR, GLU_INTERIOR, GLU_CCW, GLU_CW o GLU_UNKNOWN. Queste costanti fungono solo da hint per la tassellatura. Se li si ottiene bene, la tassellatura potrebbe andare più veloce. Se li si sbaglia, vengono ignorati e la tassellatura continua a funzionare.

Per un poligono con fori, un contorno è il contorno esterno, e gli altri sono interni. Se non chiami gluNextContour immediatamente dopo gluBeginPolygon, si presuppone che il primo contorno sia di tipo GLU_EXTERIOR.

GLU_CW e GLU_CCW indicano poligoni orientati in senso orario e antiorario. La scelta di che sono in senso orario e che sono antiorario è arbitraria in tre dimensioni, ma in qualsiasi piano, ci sono due orientamenti diversi; usare i tipi GLU_CW e GLU_CCW in modo coerente. Usare GLU_UNKNOWN se non si sa quale usare.

La funzione gluEndPolygon indica la fine della specifica del poligono. Indica inoltre che la tassellatura può iniziare a utilizzare il tessobj dell'oggetto a mosaico.