Hva er en OpenGL®-klasse?
En OpenGL®-klasse kan enten referere til en objektorientert implementering av deler av OpenGL® abstrakt programmeringsgrensesnitt (API), eller til en klasse som bruker OpenGL®-funksjonskall innenfor sin egen kode. Naturen til OpenGL®-biblioteket betyr at det virkelig ikke var støtte for en objektorientert versjon av API, og de fleste programmer kalte funksjonene slik de ble skrevet, utenfor en klasse. Etter hvert som objektorienterte språk ble mer utbredt, så det ut til at forskjellige OpenGL®-klassebiblioteker fungerte som innpakningsobjekter for kjernebiblioteket. Det er fordeler med å bruke en OpenGL®-klasse som er blitt fullstendig realisert i stedet for bare samlingen av funksjoner som tilbys i biblioteket, inkludert innkapsling og en måte å utlede nye funksjonelle klasser gjennom arv mens du beskytter den grunnleggende implementeringen. Ikke alle utviklere bruker et OpenGL®-klassebibliotek, fordi det kan være forvirrende å bytte til helt objektorienterte programmeringsparadigmer.
I objektorientert programmering er en klasse en samling av data, variabler og funksjoner, kalt metoder, som endrer informasjonen den inneholder. Opprinnelsen til OpenGL® som et bibliotek med funksjoner for C-programmeringsspråket, som ikke var et objektorientert språk, betyr at noen av metodene og programmeringspraksisene som utviklet seg ikke var godt egnet til objektorientert programmering. Da noen operativsystemer og andre enheter begynte å stole mer på objektorienterte språk, kom flere OpenGL®-klassebiblioteker til.
Noen av OpenGL®-klassebibliotekene innkapslet ganske enkelt de grunnleggende OpenGL®-funksjonene. Dette ga et trygt og kompatibelt rammeverk for programmering. Selv om denne typen klasser var nødvendig for noen språk, krevde den fortsatt at klasser fra klassen ble gjort til en funksjonell applikasjon. Virkelig organiserte biblioteker delte faktisk OpenGL®-funksjonene inn i en serie klasser, der hver enkelt administrerer et annet element i biblioteket, for eksempel rendering.
En rekke OpenGL®-klassebiblioteker begynte å utvide den grunnleggende OpenGL®-motoren og begynte å inkludere mer funksjonalitet. Dette inkluderte først og fremst en spesiell klasse for å håndtere objektene i en scene, kalt en scenegraf. Disse klassene fungerte som innpakning for kjernebibliotekene mens de ga en logisk struktur som kunne bygges på for å lage et program som gjorde mer enn å gjengi en scene og avslutte uten å måtte finne opp et nytt OpenGL®-rammeverk hver gang.
Nesten hvert OpenGL®-bibliotek, inkludert biblioteker, er på en eller annen måte blitt oversatt til en objektorientert form. Dette har i noen tilfeller gjort det lettere for utviklere å holde OpenGL® oppdatert på de forskjellige enhetene som eksisterer ved å danne en stort sett enhetlig plan for hvordan implementere OpenGL® i et objektorientert miljø. Med tillegg av objektorienterte utviklingsverktøy har det også gjort det mulig å dra og slippe en OpenGL®-klasse til et program som støtter visuell utvikling, og forenkler noen av de mer kompliserte aspektene.