Co to jest wybór OpenGL®?

Wybór OpenGL® w programowaniu komputerowym to proces określania, jaki obiekt w trójwymiarowej (3D) scenie znajduje się w danym punkcie na ekranie po wyrenderowaniu sceny. Może również odnosić się do lokalizowania wielu obiektów w punkcie lub wewnątrz pudełka. Najczęściej wybieranie OpenGL® służy do określenia obiektu 3D na ekranie, który użytkownik próbuje wybrać za pomocą kursora myszy. Chociaż ta operacja może wydawać się prosta, istnieje kilka subtelności w sposobie renderowania sceny przez OpenGL®, które mogą uczynić ją dość złożoną. Ponadto w niektórych kartach graficznych i sterownikach występują wewnętrzne usterki, które mogą powodować awarię funkcji wyboru OpenGL® i zwracanie fałszywych wyników.

Gdy użytkownik patrzy na scenę 3D na monitorze komputera, wynikowy obraz jest znany jako renderowanie sceny. Scena jest w rzeczywistości przechowywana w pamięci jako zbiór prymitywnych kształtów lub wielokątów, które same w sobie są zbiorami punktów 3D w przestrzeni sceny. Komputer wykorzystuje współrzędne światowe, zwane czasami współrzędnymi bezwzględnymi, do wykonywania najbardziej podstawowych funkcji, które manipulują obiektami na scenie. W większości zastosowań użytkownik jest w stanie manewrować widokiem sceny pod różnymi kątami, dzięki czemu obiekty mogą być widziane 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ślenia położenia myszy na dwuwymiarowym (2D) ekranie z możliwie dowolnej pozycji i kąta w obrębie sceny, pozycji kamery. Dodatkowo, ponieważ renderowanie z perspektywy ludzkiego widza jest naprawdę 2D, użytkownik nie ma możliwości zapewnienia głębi kliknięcia myszą wewnątrz sceny. Funkcja kompletacji OpenGL® rozwiązuje ten złożony problem na dwa sposoby.

Po pierwsze, zamiast wykonywania serii oddzielnych obliczeń w celu przetłumaczenia abstrakcyjnego miejsca, w którym znajduje się widz, a następnie znalezienia obiektu w oknie renderowania, funkcja faktycznie renderuje scenę tak, jak podczas normalnej pracy, z wyjątkiem tego, że użyte renderowanie do wyboru nie jest wyświetlany, służy tylko do obliczania poprawnych 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 wszystkie renderowane obiekty technicznie znajdują się w punkcie, w którym znajduje się wskaźnik myszy.

Drugi problem, a mianowicie brak możliwości wskazania głębokości wybranego obszaru, jest rozwiązywany 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 informacją o ich odległości od lokalizacji widza. Pozwala to programowi na szybkie znalezienie najbliższego obiektu w razie potrzeby.

Jednym ze sposobów wizualizacji wybierania w OpenGL® jest wyobrażenie sobie linii, czasami nazywanej promieniem w programowaniu 3D, przesuwającej się z położenia wskaźnika myszy do sceny i oddalającej się od lokalizacji widza. Każdy obiekt, którego dotyka ten promień, jest dodawany do tablicy obiektów wraz z informacją o 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 lokalizowaniu obiektu według koloru i może być znacznie szybsza. Ta metoda renderuje scenę, ale zamiast nakładania oświetlenia i tekstury na obiekty, 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 ma to wpływu na to, co widzi użytkownik. Zamiast szukać kolizji 3D między obiektami, zamiast tego zwracany jest kolor w pozycji kursora myszy, a kolor ten będzie skorelowany z określonym obiektem.