Vad är en OpenGL®-sfär?

En öppen grafikbibliotek® (OpenGL®) sfär, på den mest grundläggande nivån, är ett tredimensionellt (3D) objekt som består av en serie av trianglar eller fyrkantiga sidor vars vertikaler alla är lika långt ifrån en mittpunkt. Detta innebär att när en OpenGL®-sfär ses från valfri vinkel, visas konturen som en perfekt cirkel för betraktaren, även om belysning och skuggning kan ge volymen ett mer bollliknande utseende. Antalet vertikaler som används för att skapa en OpenGL®-sfär bestämmer objektets jämnhet när det gäller en faktisk sfär, med mindre än 12 punkter som skapar ett objekt som inte kan betraktas som en sfär. Även om en sfär anses vara en primitiv form i många grafiska applikationer och bibliotek, har OpenGL® inte någon medfödd funktionalitet för att göra en sfär, vilket innebär att kompletterande verktygssatser som OpenGL® verktygssats (GLUT) behöver användas för att undvika att skriva kod för att manuellt generera formen.

När man hanterar toppar i OpenGL® är den minsta mängden punkter som kan användas för att generera en sfär med viss grad av jämnhet 12, vilket skapar ett objekt med 20 triangulära ytor kända som en icosahedron. Utan ytterligare bearbetning kommer en OpenGL®-sfär konstruerad på detta sätt ha synliga vassa hörn runt kanterna, vilket kan vara acceptabelt för vissa applikationer. För att uppnå en mer rundad sfär måste varje ansikte delas ytterligare.

Att dela upp en icosahedron för att öka antalet toppningar som den innehåller och bilda en jämnare OpenGL®-sfär innebär att skapa nya toppar i mitten av varje kant av varje befintlig triangel. Detta innebär att varje triangulär ansikte nu kommer att innehålla fyra trianglar. Underavdelningen kan fortsätta så mycket som krävs, även om att lägga till punkter exponentiellt snabbt kan skapa ett objekt som har en hög renderingstid och kan bli svårt att översätta.

Trots några av de matematiska bekvämligheterna som en OpenGL®-sfär tillhandahåller programmerare, såsom ytnormalerna som lätt kan beräknas från toppkoordinaterna, kan textureringen av en sfär ge vissa komplexiteter. Användning av en standard tvådimensionell (2D) struktur som projiceras på sfären innebär att de övre och nedre områdena av texturbilden kommer att komprimeras, eftersom formen på trianglarna nära sfärens poler komprimeras själva. För att övervinna detta kan kubmappning användas eller programmeraren kan generera texturkoordinater manuellt för objektet.

En faktor bör noteras om att använda ett verktygsbibliotek för att generera en OpenGL®-sfär. En sfär genererad av GLUT eller liknande verktygssatser kan ibland vara svår att modifiera, optimera och hantera inom OpenGL® själv. Av detta skäl är det ibland fördelaktigt att använda anpassad skriftlig kod för att generera en OpenGL®-sfär så att den skapas och kan användas på det mest effektiva sättet som möjligt i programmet.

ANDRA SPRÅK

Hjälpte den här artikeln dig? Tack för feedbacken Tack för feedbacken

Hur kan vi hjälpa? Hur kan vi hjälpa?