Kas yra OpenGL® sfera?

Atvirosios grafikos bibliotekos® (OpenGL®) sfera pačiame pagrindiniame lygmenyje yra trimatis (3D) objektas, sudarytas iš trikampių arba keturkampių, kurių visos viršūnės yra vienodu atstumu nuo centro taško, serijos. Tai reiškia, kad žiūrint į OpenGL® sferą bet kokiu kampu, kontūras žiūrovui atrodo kaip tobulas apskritimas, nors apšvietimas ir šešėliai gali suteikti garsui panašesnį į rutulį. Viršūnių, naudojamų kuriant OpenGL® sferą, skaičius lemia objekto glotnumą jo aproksimacijose faktinei sferai, o mažiau nei 12 taškų sukuriamas objektas, kuris negali būti laikomas sfera. Nors sfera daugelyje grafinių programų ir bibliotekų laikoma primityvia forma, OpenGL® neturi jokių įgimtų funkcijų sferai pateikti, tai reiškia, kad reikia naudoti papildomus įrankių rinkinius, tokius kaip OpenGL® paslaugų įrankių rinkinys (GLUT), kad būtų išvengta kodo rašymo. Norėdami rankiniu būdu sukurti formą.

Naudojant OpenGL® viršūnes, mažiausiai taškų, kuriuos galima panaudoti tam tikro lygumo sferai sukurti, yra 12, sukuriant objektą su 20 trikampių paviršių, žinomų kaip ikosaedras. Be tolesnio apdorojimo tokiu būdu sukonstruota OpenGL® sfera turės matomus aštrius kampus aplink kraštus, o tai gali būti priimtina kai kurioms programoms. Norint pasiekti labiau suapvalintą sferą, kiekvieną veidą reikia toliau padalyti.

Ikozaedro padalijimas, siekiant padidinti jame esančių viršūnių skaičių ir suformuoti lygesnę OpenGL® sferą, apima naujų viršūnių kūrimą kiekvieno esamo trikampio kiekvieno krašto centre. Tai reiškia, kad kiekviename trikampyje dabar bus keturi trikampiai. Suskirstymas gali tęstis tiek, kiek reikia, nors eksponentiškai pridėjus taškus galima greitai sukurti objektą, kurio pateikimo laikas yra ilgas ir kurį gali būti sunku išversti.

Nepaisant kai kurių matematinių patogumų, kuriuos OpenGL® sfera suteikia programuotojams, pavyzdžiui, paviršiaus normalių, kurias galima lengvai apskaičiuoti iš viršūnių koordinačių, sferos tekstūravimas gali būti sudėtingas. Naudojant standartinę dvimatę (2D) tekstūrą, projektuojamą ant sferos, viršutinė ir apatinė tekstūros vaizdo sritys bus suspaustos, nes šalia rutulio polių esančių trikampių forma yra suspausta pati. Norėdami tai išspręsti, galima naudoti kubo atvaizdavimą arba programuotojas gali rankiniu būdu sugeneruoti objekto tekstūros koordinates.

Reikėtų atkreipti dėmesį į vieną veiksnį naudojant paslaugų biblioteką kuriant OpenGL® sferą. GLUT arba panašių įrankių rinkinių sugeneruotą sferą kartais gali būti sunku modifikuoti, optimizuoti ir valdyti pačioje OpenGL®. Dėl šios priežasties kartais pravartu naudoti pasirinktinį rašytinį kodą, kad būtų sukurta OpenGL® sfera, kad jis būtų sukurtas ir būtų naudojamas efektyviausiu būdu programoje.