Che cos'è una sfera OpenGL®?
Una sfera Open Graphics Library® (OpenGL®), al livello più elementare, è un oggetto tridimensionale (3D) costituito da una serie di triangoli o quadrilateri i cui vertici sono tutti equidistanti da un punto centrale. Ciò significa che, quando una sfera OpenGL® viene visualizzata da qualsiasi angolazione, il contorno appare come un cerchio perfetto per lo spettatore, sebbene l'illuminazione e l'ombreggiatura possano dare al volume un aspetto più simile a una palla. Il numero di vertici utilizzati per creare una sfera OpenGL® determina la levigatezza dell'oggetto nella sua approssimazione di una sfera reale, con meno di 12 punti che creano un oggetto che non può essere considerato una sfera. Anche se una sfera è considerata una forma primitiva in molte applicazioni grafiche e librerie, OpenGL® non ha alcuna funzionalità innata per il rendering di una sfera, il che significa che è necessario utilizzare toolkit supplementari come OpenGL® utility toolkit (GLUT) per evitare di scrivere codice per generare manualmente la forma.
Quando si ha a che fare con i vertici in OpenGL®, la quantità minima di punti che è possibile utilizzare per generare una sfera con un certo grado di levigatezza è 12, creando un oggetto con 20 facce triangolari noto come icosaedro. Senza ulteriore elaborazione, una sfera OpenGL® costruita in questo modo avrà angoli acuti visibili intorno ai bordi, il che potrebbe essere accettabile per alcune applicazioni. Per ottenere una sfera più arrotondata, ogni faccia deve essere ulteriormente suddivisa.
Suddividere un icosaedro per aumentare il numero di vertici che contiene e formare una sfera OpenGL® più liscia implica la creazione di nuovi vertici al centro di ciascun bordo di ciascun triangolo esistente. Ciò significa che ogni faccia triangolare conterrà ora quattro triangoli. La suddivisione può continuare quanto basta, anche se l'aggiunta di punti in modo esponenziale può creare rapidamente un oggetto che ha un tempo di rendering elevato e può diventare scomodo da tradurre.
Nonostante alcune delle comodità matematiche che una sfera OpenGL® offre ai programmatori, come le normali di superficie che possono essere facilmente calcolate dalle coordinate del vertice, la trama di una sfera può presentare alcune complessità. L'uso di una trama standard bidimensionale (2D) proiettata sulla sfera significa che le aree superiore e inferiore dell'immagine della trama verranno compresse, poiché la forma dei triangoli vicino ai poli della sfera viene compressa da sola. Per ovviare a questo, è possibile utilizzare la mappatura dei cubi oppure il programmatore potrebbe generare manualmente le coordinate della trama per l'oggetto.
Un fattore da notare sull'utilizzo di una libreria di utilità per generare una sfera OpenGL®. Una sfera generata da GLUT o toolkit simili può talvolta essere difficile da modificare, ottimizzare e gestire all'interno di OpenGL® stesso. Per questo motivo, a volte è utile utilizzare un codice scritto personalizzato per generare una sfera OpenGL® in modo che venga creata e possa essere utilizzata nel modo più efficiente possibile all'interno del programma.