Condividi tramite


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

  1. Creare un oggetto tessellazione con gluNewTess.

  2. Usare gluTessCallBack per definire le funzioni di callback che verranno usate per elaborare i triangoli generati dal tessellatore.

  3. 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.