Što je OpenGL® sfera?

Sfera Open Graphics Library® (OpenGL®), na najosnovnijoj razini, je trodimenzionalni (3D) objekt sastavljen od niza trokuta ili četverokuta čiji su vrhovi jednako udaljeni od središnje točke. To znači da, kada se OpenGL® sfera promatra iz bilo kojeg kuta, obris se gledatelju čini savršenim krugom, iako bi osvjetljenje i sjenčanje mogli dati volumenu izgled više poput lopte. Broj vrhova korištenih za stvaranje OpenGL® sfere određuje glatkoću objekta u njegovoj aproksimaciji stvarnoj sferi, pri čemu bilo koji manje od 12 točaka stvara objekt koji se ne može smatrati sferom. Iako se sfera smatra primitivnim oblikom u mnogim grafičkim aplikacijama i bibliotekama, OpenGL® nema nikakvu urođenu funkcionalnost za renderiranje sfere, što znači da je potrebno koristiti dodatne alate kao što je OpenGL® uslužni alat (GLUT) kako bi se izbjeglo pisanje koda. za ručno generiranje oblika.

Kada se radi o vrhovima u OpenGL®-u, najmanji broj točaka koje se mogu koristiti za generiranje kugle s nekim stupnjem glatkoće je 12, stvarajući objekt s 20 trokutastih lica poznat kao ikosaedar. Bez daljnje obrade, OpenGL® sfera konstruirana na ovaj način imat će vidljive oštre kutove oko rubova, što bi moglo biti prihvatljivo za neke primjene. Da bi se postigla zaobljenija sfera, svako lice treba dodatno podijeliti.

Podjela ikosaedra kako bi se povećao broj vrhova koji sadrži i formirala glatkija OpenGL® sfera uključuje stvaranje novih vrhova u središtu svakog ruba svakog postojećeg trokuta. To znači da će svako trokutasto lice sada sadržavati četiri trokuta. Podjela se može nastaviti koliko god je potrebno, iako eksponencijalno dodavanje točaka može brzo stvoriti objekt koji ima dugo vrijeme generiranja i može postati glomazan za prevođenje.

Unatoč nekim matematičkim pogodnostima koje OpenGL® sfera pruža programerima, kao što su normalne površine koje se mogu lako izračunati iz koordinata vrha, teksturiranje sfere može predstavljati određene složenosti. Korištenje standardne dvodimenzionalne (2D) teksture projicirane na sferu znači da će gornja i donja područja slike teksture postati komprimirana, jer se oblik trokuta u blizini polova kugle sam komprimira. Da bi se to prevladalo, moglo bi se koristiti mapiranje kocke ili bi programer mogao ručno generirati koordinate teksture za objekt.

Treba napomenuti jedan čimbenik o korištenju uslužne biblioteke za generiranje OpenGL® sfere. Sferu koju generira GLUT ili slični skupovi alata ponekad može biti teško modificirati, optimizirati i upravljati unutar samog OpenGL®-a. Iz tog razloga, ponekad je korisno koristiti prilagođeni napisani kod za generiranje OpenGL® sfere tako da se kreira i može koristiti na najučinkovitiji mogući način unutar programa.