Co to jest pobieranie OpenGL®?
Wybór OpenGL® w programowaniu komputerowym jest procesem określania, który obiekt w trójwymiarowej scenie (3D) znajduje się w danym punkcie ekranu po renderowaniu sceny. Może także odnosić się do lokalizowania wielu obiektów w punkcie lub w pudełku. Najczęściej pobieranie OpenGL® służy do określania, który obiekt 3D na ekranie użytkownik wybiera za pomocą kursora myszy. Chociaż ta operacja może wydawać się prosta, istnieje kilka subtelności w tym, jak OpenGL® renderuje scenę, która może uczynić ją dość złożoną. Ponadto istnieją pewne usterki w niektórych kartach graficznych i sterownikach, które mogą powodować awarię funkcji pobierania OpenGL® i zwracać fałszywe wyniki.
Gdy użytkownik patrzy na scenę 3D na monitorze komputera, powstały obraz nazywany jest renderowaniem sceny. Scena jest faktycznie przechowywana w pamięci jako zbiór prymitywnych kształtów lub wielokątów, które same w sobie są jedynie zbiorem punktów 3D w przestrzeni sceny. Komputer wykorzystuje współrzędne świata, które są czasami nazywane współrzędnymi bezwzględnymi, do wykonywania najbardziej podstawowych funkcji, które manipulują obiektami na scenie. W większości aplikacji użytkownik może manewrować widokiem sceny pod różnymi kątami, aby obiekty były widoczne z różnych perspektyw. Wirtualna lokalizacja użytkownika w scenie nazywana jest kątem kamery lub pozycją kamery.
Złożoność wybierania OpenGL® wynika z określania położenia myszy na dwuwymiarowym ekranie (2D) z możliwie dowolnego położenia i kąta w scenie, położenia kamery. Ponadto, ponieważ rendering z perspektywy ludzkiej przeglądarki jest naprawdę 2D, użytkownik nie ma możliwości podania głębokości kliknięcia myszą wewnątrz sceny. Funkcja kompletacji OpenGL® rozwiązuje ten złożony problem na dwa sposoby.
Po pierwsze, zamiast wykonywania szeregu osobnych obliczeń w celu przetłumaczenia miejsca, w którym widz jest abstrakcyjnie, a następnie znalezienia obiektu w oknie renderowania, funkcja faktycznie renderuje scenę tak, jak działa podczas normalnej pracy, z wyjątkiem tego, że zastosowano renderowanie do wyboru nie jest wyświetlany, służy jedynie do obliczenia prawidłowej pozycji obiektów. Różnica polega na tym, że zamiast renderować cały obszar, który byłby widoczny dla użytkownika, renderuje tylko obszar, w którym znajduje się mysz. Oznacza to, że wszelkie renderowane obiekty są technicznie w punkcie, w którym znajduje się wskaźnik myszy.
Drugi problem, mianowicie brak możliwości wskazania głębokości wybranego obszaru, został rozwiązany przez zwrócenie wszystkich obiektów znajdujących się pod współrzędnymi myszy w scenie. Funkcja pobierania OpenGL® zwraca wszystkie obiekty w tablicy wraz z odległością od lokalizacji widza. Dzięki temu program może szybko znaleźć najbliższy obiekt, jeśli jest to pożądane.
Jednym ze sposobów wizualizacji wybierania OpenGL® jest wyobrażenie sobie linii, czasami określanej jako promień w programowaniu 3D, przemieszczającej się z położenia wskaźnika myszy do sceny i z dala od miejsca widza. Każdy obiekt, którego dotknie ten promień, jest dodawany do tablicy obiektów wraz z odległością od widza. To jest bardzo proste wyjaśnienie, jak działa jedna forma kompletacji OpenGL®.
Inna metoda wybierania obiektów w OpenGL® polega na lokalizacji obiektu według koloru i może być znacznie szybsza. Ta metoda renderuje scenę, ale zamiast nakładać na obiekty oświetlenie i teksturę, są one renderowane za pomocą jednego, prostego koloru. Każdy obiekt lub grupa obiektów ma swój odrębny kolor. Scena jest renderowana tylko w pamięci i nie jest wyświetlana, więc nie wpływa to na to, co widzi użytkownik. Zamiast szukać kolizji 3D między obiektami, zamiast tego zwracany jest kolor w pozycji kursora myszy, a ten kolor będzie korelował z określonym obiektem.