Co to jest sfera OpenGL®?

Sfera Open Graphics Library® (OpenGL®), na najbardziej podstawowym poziomie, jest trójwymiarowym (3D) obiektem złożonym z szeregu trójkątów lub czworokątów, których wierzchołki znajdują się w równej odległości od punktu środkowego. Oznacza to, że gdy sfera OpenGL® jest oglądana pod dowolnym kątem, kontur wydaje się widzowi idealnym kołem, chociaż oświetlenie i cieniowanie mogą nadać objętości bardziej podobny do kuli wygląd. Liczba wierzchołków użytych do utworzenia sfery OpenGL® określa gładkość obiektu w jego przybliżeniu rzeczywistej sfery, przy czym mniej niż 12 punktów tworzy obiekt, którego nie można uznać za sferę. Mimo że kula jest uważana za prymitywny kształt w wielu aplikacjach graficznych i bibliotekach, OpenGL® nie ma żadnej wrodzonej funkcji renderowania kuli, co oznacza, że ​​należy używać dodatkowych zestawów narzędzi, takich jak zestaw narzędzi OpenGL® (GLUT), aby uniknąć pisania kodu aby ręcznie wygenerować kształt.

Kiedy mamy do czynienia z wierzchołkami w OpenGL®, najmniejszą liczbą punktów, które można wykorzystać do wygenerowania kuli o pewnym stopniu gładkości, jest 12, tworząc obiekt z 20 trójkątnymi ścianami znanymi jako dwudziestościan. Bez dalszej obróbki sfera OpenGL® skonstruowana w ten sposób będzie miała widoczne ostre narożniki wokół krawędzi, co może być akceptowalne w niektórych zastosowaniach. Aby uzyskać bardziej zaokrągloną sferę, każda twarz musi być dalej podzielona.

Podział dwudziestościanu w celu zwiększenia liczby wierzchołków, które zawiera i utworzenia gładszej sfery OpenGL®, obejmuje tworzenie nowych wierzchołków w środku każdej krawędzi każdego istniejącego trójkąta. Oznacza to, że każda trójkątna ściana będzie teraz zawierać cztery trójkąty. Podział może być kontynuowany tak długo, jak jest to wymagane, chociaż dodawanie punktów wykładniczo może szybko utworzyć obiekt, który ma długi czas renderowania i może stać się niewygodny w tłumaczeniu.

Pomimo pewnych udogodnień matematycznych, jakie sfera OpenGL® zapewnia programistom, takich jak normalne powierzchni, które można łatwo obliczyć na podstawie współrzędnych wierzchołków, teksturowanie sfery może przedstawiać pewną złożoność. Użycie standardowej dwuwymiarowej (2D) tekstury rzutowanej na kulę oznacza, że ​​górne i dolne obszary obrazu tekstury zostaną skompresowane, ponieważ kształt trójkątów w pobliżu biegunów kuli jest kompresowany. Aby temu zaradzić, można zastosować mapowanie sześcienne lub programista może ręcznie wygenerować współrzędne tekstury dla obiektu.

Należy zwrócić uwagę na jeden czynnik dotyczący korzystania z biblioteki narzędziowej do generowania sfery OpenGL®. Kula generowana przez GLUT lub podobne zestawy narzędzi może być czasami trudna do zmodyfikowania, optymalizacji i zarządzania w samym OpenGL®. Z tego powodu czasami korzystne jest użycie niestandardowego kodu napisanego do wygenerowania sfery OpenGL®, aby została utworzona i mogła być używana w najbardziej efektywny sposób w programie.