Co to jest OpenGL® Quad?
Czworokąt lub czworokąt OpenGL® w programowaniu komputerowym i grafice ma kształt trójwymiarowy (3D), zwany także wielokątem, który ma cztery boki i cztery punkty. Każdy punkt 3D reprezentujący pojedynczy róg kwadratu 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 quada nie muszą być zgodne z żadnymi prawdziwymi wytycznymi, z wyjątkiem tego, że muszą być cztery z nich; 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ć odwzorowany na powierzchni bez dużych zniekształceń i bez potrzeby stosowania skomplikowanych technik mapowania tekstur. Korzystanie z quada OpenGL® ma jednak swoje własne wyzwania, a wielu programistów sugeruje całkowite unikanie ich używania.
Jednym z głównych zastosowań quadów OpenGL® jest rysowanie dwuwymiarowej (2D) grafiki w środowisku 3D. Można to zrobić, aby na wierzch sceny 3D nałożyć statyczny interfejs użytkownika lub emulować grafikę 2D za pomocą OpenGL®. Mimo że OpenGL® został zaprojektowany do renderowania złożonej grafiki 3D, jest często wykorzystywany w aplikacjach graficznych 2D ze względu na optymalizacje i elastyczność abstrakcyjnego interfejsu programistycznego (API). Kwadrat staje się bardzo ważny w renderowaniu grafiki 2D, ponieważ jest to naturalna reprezentacja 3D obrazu cyfrowego, co oznacza, że quad może być proporcjonalnie dopasowany do wymiaru obrazu. Gdy proporcje się zgadzają, obraz można odwzorować lub rzutować na powierzchnię kwadratu bez jakiegokolwiek zniekształcenia, zawijania lub przestrzeni rynnowej.
Według niektórych programistów zaletą korzystania z kwadratu OpenGL® jest to, że łatwiej jest pomyśleć o tym, jak quady pasują do siebie, niż wizualizować, jak trójkąty pasują do siebie. Jest to szczególnie prawdziwe w przypadku prostych kształtów 3D, takich jak sześcian, w którym każdy czworokąt ma jedną stronę; z siatką trójkąta należy połączyć dwa trójkąty, aby utworzyć quad, który tworzy pojedynczy bok. Można również łatwo manipulować quadami, aby stworzyć perspektywę lub inne efekty w środowisku, które jest sąsiadująco lub wyrównane do siatki.
Korzystanie z quada OpenGL® ma pewne wady, głównie z powodu algorytmów używanych do rasteryzacji lub renderowania obrazu w oknie przeglądarki. Jednym z najczęściej spotykanych problemów jest to, że karta renderująca lub graficzna może w dowolnym momencie rozbić quad na dwa trójkąty w celu zwiększenia wydajności. Może to spowodować nagle zniekształconą powierzchnię nagle zniekształconą pod kątem przez quad w miejscu styku krawędzi trójkątów.
Kolejny problem, który jest bardziej powszechny niż się czasem wydaje, dotyczy wycinania quada OpenGL®. Gdy część quada znajduje się poza oknem podglądu, poza ekranem, renderer przycina quad, więc renderowana jest tylko część widoczna. Oznacza to, że quad zostanie wycięty geometrycznie. Jeśli quad został przekształcony w dwa trójkąty przed wystąpieniem obcinania, wówczas każdy trójkąt staje się quadem, a każdy z tych quadów jest konwertowany na dwa trójkąty. Prowadzi to do sytuacji, w której obcięty quad nagle składa się z czterech trójkątów zamiast z jednego gładkiego kwadratu.
Złożoność i nieprzewidywalność konwersji quadów na trójkąty prowadzi do niepożądanych wyników. Należą do nich zniekształcenia tekstur, niedokładności lub artefakty związane z oświetleniem wierzchołków, a czasem brak powierzchni wielokątów. Z tych powodów niektórzy programiści całkowicie unikają używania quadów.