Wat is een OpenGL® Quad?
Een OpenGL® vierhoek, of quad, in computerprogrammering en grafische afbeeldingen is een driedimensionale (3D) vorm, ook wel een polygoon genoemd, met vier zijden en vier punten. Elk 3D-punt dat een enkele hoek van de OpenGL®-quad vertegenwoordigt, staat bekend als een hoekpunt en wordt gedefinieerd met drie getallen die betrekking hebben op de coördinatenpositie in de virtuele ruimte. De hoekpunten van een quad hoeven geen echte richtlijnen te volgen, behalve dat het er vier moeten zijn; anders staat de vorm bekend als een veelhoek, driehoek of lijn, afhankelijk van het werkelijke aantal. De meeste digitale afbeeldingen zijn in feite rechthoekig, dus een OpenGL® quad kan een nuttige vorm zijn omdat de afbeelding textuur kan worden toegewezen aan het oppervlak zonder een grote hoeveelheid vervorming en zonder de noodzaak van complexe textuurafbeeldingstechnieken. Het gebruik van een OpenGL® quad heeft echter zijn eigen uitdagingen, en er zijn een aantal programmeurs die voorstellen om het gebruik ervan volledig te vermijden.
Een van de belangrijkste toepassingen van een OpenGL®-quad is het tekenen van tweedimensionale (2D) afbeeldingen in een 3D-omgeving. Dit kan worden gedaan om een statische gebruikersinterface bovenop een 3D-scène te leggen of om 2D-afbeeldingen te emuleren met OpenGL®. Hoewel OpenGL® is ontworpen om complexe 3D-afbeeldingen weer te geven, wordt het vaak gebruikt in 2D grafische toepassingen vanwege de optimalisaties en flexibiliteit van de abstracte programmeerinterface (API). Een quad wordt erg belangrijk bij het weergeven van 2D-afbeeldingen, omdat het een natuurlijke 3D-weergave is van een digitaal beeld, wat betekent dat een quad kan worden geproportioneerd zodat deze exact overeenkomt met de dimensie van het beeld. Zodra de verhoudingen overeenkomen, kan het beeld textuur worden toegewezen, of geprojecteerd, op het oppervlak van de quad zonder enige vorm van vervorming, omwikkeling of gootruimte.
Een voordeel van het gebruik van een OpenGL® quad is volgens sommige programmeurs dat het gemakkelijker is om na te denken over hoe quads in elkaar passen, in plaats van te visualiseren hoe driehoeken in elkaar passen. Dit geldt met name voor eenvoudige 3D-vormen zoals een kubus waarin elke quad een enkele zijde is; met een driehoekig gaas, moeten twee driehoeken worden gecombineerd om een quad te maken die een enkele zijde vormt. Quads kunnen ook gemakkelijk worden gemanipuleerd om perspectief of andere effecten te creëren in een omgeving die is betegeld of is uitgelijnd op een raster.
Er zijn enkele nadelen aan het gebruik van een OpenGL®-quad, meestal vanwege de algoritmen die worden gebruikt om een afbeelding in het venster van de viewer te rasteren of weer te geven. Een van de meest voorkomende problemen is dat de rendering- of grafische kaart op elk moment de quad in twee driehoeken kan breken met het oog op efficiëntie. Dit kan ervoor zorgen dat een anders glad oppervlak plotseling een zichtbare vervorming vertoont onder een hoek door de quad waar de randen van de driehoeken elkaar raken.
Een ander probleem dat vaker voorkomt dan soms wordt gedacht, heeft te maken met het knippen van een OpenGL® quad. Wanneer een deel van de quad zich buiten het weergavevenster bevindt, buiten het scherm, zal de renderer de quad knippen zodat alleen het zichtbare gedeelte wordt weergegeven. Dit betekent dat een quad geometrisch wordt gesneden. Als de quad was omgezet in twee driehoeken voordat het knippen plaatsvond, wordt elke driehoek een quad en elk van die quads wordt omgezet in twee driehoeken. Dit leidt tot een situatie waarin een afgeknipte quad plotseling bestaat uit vier driehoeken in plaats van een vloeiende quad.
De complexiteit en onvoorspelbaarheid van de conversie van quads in driehoeken leidt tot ongewenste resultaten. Deze omvatten vervormingen in texturen, onnauwkeurigheden of artefacten met betrekking tot hoekpuntverlichting en soms ontbrekende polygoonoppervlakken. Om deze redenen vermijden sommige programmeurs het gebruik van quads helemaal.