Mis on OpenGL® Quad?

OpenGL® nelinurk ehk nelinurk arvutiprogrammeerimises ja graafikas on kolmemõõtmeline (3D) kujund, mida nimetatakse ka hulknurgaks ja millel on neli külge ja neli punkti. Iga 3D-punkti, mis esindab OpenGL® neliku ühte nurka, nimetatakse tipuks ja see on määratletud kolme numbriga, mis on seotud selle koordinaatide asukohaga virtuaalses ruumis. Neliku tipud ei pea järgima ühtegi tegelikku suunist, välja arvatud see, et neid peab olema neli; muidu nimetatakse kujundit sõltuvalt tegelikust arvust hulknurga, kolmnurga või joonena. Enamik digikujutisi on tegelikult ristkülikukujulised, seega võib OpenGL® nelik olla kasulik kuju, kuna pilti saab pinnale tekstuuri kaardistada ilma suurte moonutusteta ja ilma keerukate tekstuurikaardistamise tehnikateta. OpenGL® quadi kasutamisel on siiski omad väljakutsed ja on mitmeid programmeerijaid, kes soovitavad nende kasutamist täielikult vältida.

OpenGL® quadi üks peamisi kasutusviise on kahemõõtmelise (2D) graafika joonistamine 3D-keskkonnas. Seda saab teha staatilise kasutajaliidese katmiseks 3D-stseeni peal või 2D-graafika emuleerimiseks OpenGL®-iga. Kuigi OpenGL® loodi keeruka 3D-graafika renderdamiseks, kasutatakse seda abstraktse programmeerimisliidese (API) optimeerimise ja paindlikkuse tõttu sageli 2D-graafikarakendustes. Nelik muutub 2D-graafika renderdamisel väga oluliseks, kuna see on digitaalse kujutise loomulik 3D-esitus, mis tähendab, et nelik saab proportsionaalselt täpselt pildi mõõtmetele vastavaks. Kui proportsioonid ühtivad, saab kujutise tekstuuri kaardistada või projitseerida neljaratta pinnale ilma igasuguste moonutuste, mähise või renni ruumita.

Mõnede programmeerijate sõnul on OpenGL®-i neliku kasutamise eeliseks see, et lihtsam on mõelda, kuidas nelinurgad omavahel sobivad, mitte kolmnurkade kokkusobivuse visualiseerimisel. See kehtib eriti lihtsate 3D-kujundite kohta, nagu kuubik, milles iga nelinurk on üks külg; kolmnurkse võrguga tuleb kaks kolmnurka ühendada, et saada nelik, mis moodustab ühe külje. Nelikuid saab hõlpsasti manipuleerida, et luua perspektiivi või muid efekte keskkonnas, mis on kas plaaditud või ruudustikuga joondatud.

OpenGL® quadi kasutamisel on mõned puudused, peamiselt algoritmide tõttu, mida kasutatakse pildi rasteriseerimiseks või renderdamiseks vaataja aknas. Üks enim esinenud probleeme on see, et renderdus- või graafikakaart võib tõhususe huvides igal hetkel nelinurga kaheks kolmnurgaks lõhkuda. See võib põhjustada muidu sileda pinna äkitselt nähtava moonutuse nurga all läbi nelinurkade, kus kolmnurkade servad kokku puutuvad.

Teine probleem, mis on tavalisem, kui mõnikord arvatakse, on seotud OpenGL®-i neliku lõikamisega. Kui osa neljast on vaateaknast väljaspool ekraani, lõikab renderdaja neliku nii, et renderdatakse ainult nähtav osa. See tähendab, et nelik on geomeetriliselt lõigatud. Kui nelinurk teisendati enne lõikamist kaheks kolmnurgaks, muutub iga kolmnurk neljaks ja igaüks neist neljast kaheks kolmnurgaks. See toob kaasa olukorra, kus kärbitud nelik koosneb äkitselt neljast kolmnurgast ühe sileda neliku asemel.

Neljarattaliste kolmnurkadeks muutmise keerukus ja ettearvamatus viib soovimatute tulemusteni. Nende hulka kuuluvad tekstuuride moonutused, tipuvalgustusega seotud ebatäpsused või artefaktid ja mõnikord puuduvad hulknurga pinnad. Nendel põhjustel väldivad mõned programmeerijad nelinurkade kasutamist.