Kas yra OpenGL® Quad?

OpenGL® keturkampis arba keturkampis kompiuterių programavime ir grafikoje yra trimatė (3D) forma, dar vadinama daugiakampiu, turinti keturias kraštines ir keturis taškus. Kiekvienas 3D taškas, vaizduojantis vieną OpenGL® keturkampio kampą, yra žinomas kaip viršūnė ir apibrėžiamas trimis skaičiais, susijusiais su jo koordinačių padėtimi virtualioje erdvėje. Keturkampio viršūnės neturi atitikti jokių realių gairių, išskyrus tai, kad jų turi būti keturios; kitu atveju forma yra žinoma kaip daugiakampis, trikampis arba linija, priklausomai nuo tikrojo skaičiaus. Dauguma skaitmeninių vaizdų iš tikrųjų yra stačiakampiai, todėl OpenGL® keturkampis gali būti naudinga forma, nes vaizdas gali būti susietas su tekstūra su paviršiumi be didelių iškraipymų ir nereikalaujant sudėtingų tekstūros atvaizdavimo metodų. Tačiau OpenGL® keturkampio naudojimas turi savo iššūkių, ir yra nemažai programuotojų, kurie siūlo visiškai vengti jo naudojimo.

Vienas iš pagrindinių OpenGL® keturkampio naudojimo būdų yra piešti dvimatę (2D) grafiką 3D aplinkoje. Tai galima padaryti, norint turėti statinę vartotojo sąsają, uždengtą 3D scenos viršuje, arba imituoti 2D grafiką su OpenGL®. Nors „OpenGL®“ buvo sukurta sudėtingai 3D grafikai pateikti, ji dažnai naudojama 2D grafikos programose dėl abstrakčios programavimo sąsajos (API) optimizavimo ir lankstumo. Keturkampis tampa labai svarbus atvaizduojant 2D grafiką, nes tai yra natūralus skaitmeninio vaizdo 3D vaizdas, o tai reiškia, kad keturkampis gali būti proporcingas, kad tiksliai atitiktų vaizdo matmenis. Kai proporcijos sutampa, vaizdas gali būti sudarytas iš tekstūros arba projektuojamas ant keturračio paviršiaus be jokio iškraipymo, apvyniojimo ar latako vietos.

Kai kurių programuotojų teigimu, OpenGL® keturkampio naudojimo pranašumas yra tas, kad lengviau galvoti apie tai, kaip keturkampiai dera tarpusavyje, o ne vizualizuoti, kaip trikampiai dera tarpusavyje. Tai ypač pasakytina apie paprastas 3D formas, tokias kaip kubas, kuriame kiekvienas keturkampis yra viena pusė; naudojant trikampio tinklelį, du trikampiai turi būti sujungti, kad būtų sudarytas keturkampis, kuris sudarytų vieną kraštinę. Keturkampius taip pat galima lengvai manipuliuoti, kad būtų galima sukurti perspektyvą ar kitus efektus aplinkoje, kuri yra išklota plytelėmis arba suderinta su tinkleliu.

Yra keletas OpenGL® keturkampio naudojimo trūkumų, daugiausia dėl algoritmų, naudojamų vaizdui rastruoti arba pateikti peržiūros lange. Viena iš dažniausiai pasitaikančių problemų yra ta, kad atvaizdavimo arba vaizdo plokštė bet kuriuo metu gali suskaidyti keturkampį į du trikampius efektyvumo sumetimais. Dėl to kitaip lygus paviršius gali staiga turėti matomą iškraipymą kampu per keturkampį, kur susikerta trikampių kraštai.

Kita problema, kuri yra dažnesnė, nei kartais manoma, susijusi su OpenGL® keturračio nukirpimu. Kai dalis keturkampio yra už peržiūros lango, ne ekrane, atvaizduotojas nukirps keturkampį, kad būtų pateikta tik matoma dalis. Tai reiškia, kad keturratis bus geometriškai supjaustytas. Jei keturkampis buvo paverstas dviem trikampiais prieš nukirpimą, tada kiekvienas trikampis tampa keturkampiu, o kiekvienas iš tų keturkampių paverčiamas dviem trikampiais. Tai veda į situaciją, kai nukirptas keturkampis staiga susideda iš keturių trikampių, o ne iš vieno lygaus keturkampio.

Keturkampių pavertimo trikampiais sudėtingumas ir nenuspėjamumas sukelia nepageidaujamų rezultatų. Tai apima tekstūrų iškraipymus, netikslumus ar artefaktus, susijusius su viršūnių apšvietimu, o kartais ir trūkstamus daugiakampius paviršius. Dėl šių priežasčių kai kurie programuotojai visiškai vengia naudoti keturračius.