Tessellating Polygons
OpenGL può visualizzare direttamente solo poligoni convex semplici. Un poligono è semplice se:
- I bordi si intersecano solo ai vertici.
- Non sono presenti vertici duplicati.
- Esattamente due bordi si incontrano in qualsiasi vertice.
Per visualizzare poligoni semplici non convex o poligoni semplici contenenti fori, è necessario prima triangolare i poligoni (suddividerli in poligoni convex). Tale suddivisione è denominata tessellazione. GLU fornisce una raccolta di funzioni che eseguono la tessellazione. Si noti che le funzioni di tessellazione GLU non possono gestire poligoni nonsimple; non esiste un metodo OpenGL standard per gestire tali poligoni.
Poiché la tessellazione è spesso necessaria e può essere piuttosto complessa, questa sezione descrive le funzioni di tessellazione GLU in dettaglio. Queste funzioni accettano come poligoni semplici arbitrari che potrebbero includere fori e restituiscono alcune combinazioni di triangoli, mesh triangoli e fan triangoli. Se non si vuole gestire mesh o fan, è possibile specificare che le funzioni di tessellazione restituiscono solo triangoli. Tuttavia, le informazioni sulla mesh e sulla ventola migliorano le prestazioni. La tessellazione poligono funzioni triangolare un poligono concavo con uno o più contorni.
Per usare la tessellazione poligono
Creare un oggetto tessellazione con gluNewTess.
Usare gluTessCallBack per definire le funzioni di callback che verranno usate per elaborare i triangoli generati dal tessellatore.
Con gluBeginPolygon, gluTessVertex, gluNextContour e gluEndPolygon, specificare il poligono con fori o il poligono concavo da tessere.
Al termine della descrizione poligono, la struttura tessellazione richiama le funzioni di callback in base alle esigenze.
È possibile distruggere oggetti di tessellazione non autorizzati con gluDeleteTess.
Per altre informazioni sul salvataggio dei dati di tessellazione, vedere Uso delle funzioni di callback.