Hvad er en OpenGL®-sfære?
En åben grafikbibliotek® (OpenGL®) sfære, på det mest basale niveau, er et tredimensionelt (3D) objekt, der består af en række trekanter eller firkantede sider, hvis hjørnepunkter alle er ens fra et midtpunkt. Dette betyder, at når en OpenGL®-sfære ses fra en hvilken som helst vinkel, vises konturen som en perfekt cirkel for seeren, selvom belysning og skygge muligvis giver lydstyrken et mere kugellignende udseende. Antallet af hjørner, der bruges til at oprette en OpenGL®-sfære, bestemmer objektets glathed i dens tilnærmelse til en faktisk sfære, med mindre end 12 punkter, der skaber et objekt, der ikke kan betragtes som en sfære. Selvom en kugle betragtes som en form primitiv i mange grafiske applikationer og biblioteker, har OpenGL® ikke nogen medfødt funktionalitet til at gøre en sfære, hvilket betyder, at supplerende værktøjssæt, såsom OpenGL® utility toolkit (GLUT), skal bruges for at undgå at skrive kode til manuelt at generere formen.
Når man beskæftiger sig med højdepunkter i OpenGL®, er den mindste mængde punkter, der kan bruges til at generere en kugle med en vis grad af glathed, 12, hvilket skaber et objekt med 20 trekantede flader kendt som en icosahedron. Uden yderligere behandling vil en OpenGL®-sfære, der er konstrueret på denne måde, have synlige skarpe hjørner rundt om kanterne, hvilket kan være acceptabelt for nogle applikationer. For at opnå en mere afrundet sfære skal hvert ansigt underinddeles.
At opdele en icosahedron for at øge antallet af hjørner, den indeholder, og danne en glattere OpenGL®-sfære indebærer, at der oprettes nye hjørner i midten af hver kant af hver eksisterende trekant. Dette betyder, at hvert trekantet ansigt nu vil indeholde fire trekanter. Underinddelingen kan fortsætte så meget som krævet, selvom tilføjelse af point eksponentielt hurtigt kan skabe et objekt, der har en høj gengivelsestid og kan blive uhåndterlig til at oversætte.
På trods af nogle af de matematiske bekvemmeligheder, som en OpenGL®-sfære giver programmerere, såsom overfladeanormaler, der let kan beregnes ud fra toppunktkoordinaterne, kan teksturering af en sfære give nogle kompleksiteter. Brug af en standard todimensionel (2D) tekstur, der projiceres på kuglen, betyder, at de øverste og nederste områder af teksturbilledet bliver komprimeret, fordi formen af trekanterne nær kuglepolerne komprimeres selv. For at overvinde dette kunne terningskortlægning bruges, eller programmereren kunne generere teksturkoordinaterne manuelt for objektet.
En faktor skal bemærkes ved brug af et hjælpebibliotek til generering af en OpenGL®-sfære. En sfære genereret af GLUT eller lignende værktøjssæt kan undertiden være vanskelige at ændre, optimere og styre i OpenGL® selv. Af denne grund er det undertiden fordelagtigt at bruge brugerdefineret skriftlig kode til at generere en OpenGL®-sfære, så den er oprettet og kan bruges på den mest effektive måde, der er mulig i programmet.