Co to jest quad OpenGL®?

Czworokąt OpenGL® lub czworokąt w programowaniu komputerowym i grafice to trójwymiarowy (3D) kształt, zwany również wielokątem, który ma cztery boki i cztery punkty. Każdy punkt 3D reprezentujący pojedynczy róg czworokąta OpenGL® jest znany jako wierzchołek i jest zdefiniowany trzema liczbami odnoszącymi się do jego położenia współrzędnych w przestrzeni wirtualnej. Wierzchołki czworokąta nie muszą podążać za żadnymi rzeczywistymi wytycznymi, z wyjątkiem tego, że muszą być ich cztery; w przeciwnym razie kształt jest znany jako wielokąt, trójkąt lub linia w zależności od rzeczywistej liczby. Większość obrazów cyfrowych jest w rzeczywistości prostokątna, więc quad OpenGL® może być użytecznym kształtem, ponieważ obraz może być mapowany teksturą na powierzchnię bez dużej ilości zniekształceń i bez potrzeby stosowania skomplikowanych technik mapowania tekstur. Korzystanie z quada OpenGL® wiąże się jednak z własnymi wyzwaniami i jest wielu programistów, którzy sugerują całkowite unikanie ich używania.

Jednym z głównych zastosowań quada OpenGL® jest rysowanie grafiki dwuwymiarowej (2D) w środowisku 3D. Można to zrobić, aby nałożyć statyczny interfejs użytkownika na scenę 3D lub emulować grafikę 2D za pomocą OpenGL®. Chociaż OpenGL® został zaprojektowany do renderowania złożonej grafiki 3D, jest często używany w aplikacjach graficznych 2D ze względu na optymalizacje i elastyczność abstrakcyjnego interfejsu programowania (API). Czwórka staje się bardzo ważna w renderowaniu grafiki 2D, ponieważ jest to naturalna reprezentacja 3D obrazu cyfrowego, co oznacza, że ​​czwórka może być proporcjonalna tak, aby dokładnie odpowiadała wymiarom obrazu. Po dopasowaniu proporcji obraz może być mapowany teksturą lub rzutowany na powierzchnię czworokąta bez jakichkolwiek zniekształceń, zawijania lub przestrzeni rynnowej.

Według niektórych programistów zaletą korzystania z czworokąta OpenGL® jest to, że łatwiej jest myśleć o tym, jak czworokąty do siebie pasują, niż wizualizować, jak pasują do siebie trójkąty. Jest to szczególnie prawdziwe w przypadku prostych kształtów 3D, takich jak sześcian, w którym każdy czworokąt jest pojedynczym bokiem; z siatką trójkątów, dwa trójkąty muszą być połączone, aby utworzyć czwórkę, która tworzy jedną stronę. Kwadratami można również łatwo manipulować, aby stworzyć perspektywę lub inne efekty w środowisku, które jest kafelkowe lub wyrównane do siatki.

Korzystanie z quada OpenGL® ma pewne wady, głównie ze względu na algorytmy używane do rasteryzacji lub renderowania obrazu w oknie przeglądarki. Jednym z najczęściej napotykanych problemów jest to, że renderowanie lub karta graficzna może w dowolnym momencie rozbić czwórkę na dwa trójkąty w celu zwiększenia wydajności. Może to spowodować nagłe zniekształcenie gładkiej powierzchni pod kątem przez czworokąt, w którym spotykają się krawędzie trójkątów.

Inny problem, który jest bardziej powszechny niż czasami sądzono, dotyczy obcinania czwórki OpenGL®. Gdy część czworokąta znajduje się poza oknem podglądu, poza ekranem, renderer przytnie czworokąt, tak aby renderowana była tylko widoczna część. Oznacza to, że quad zostanie wycięty geometrycznie. Jeśli czworokąt został przekształcony w dwa trójkąty przed wystąpieniem obcinania, to każdy trójkąt staje się czworokątem, a każdy z tych czworokątów jest przekształcany w dwa trójkąty. Prowadzi to do sytuacji, w której obcięty czworokąt składa się nagle z czterech trójkątów zamiast jednego gładkiego czworokąta.

Złożoność i nieprzewidywalność zamiany czworokątów na trójkąty prowadzi do niepożądanych rezultatów. Należą do nich zniekształcenia tekstur, niedokładności lub artefakty związane z oświetleniem wierzchołków, a czasami brakujące powierzchnie wielokątów. Z tych powodów niektórzy programiści całkowicie unikają używania czwórek.