Hvad er en OpenGL®-klasse?
En OpenGL®-klasse kan enten henvise til en objektorienteret implementering af dele af OpenGL® abstrakt programmeringsgrænseflade (API) eller til en klasse, der bruger OpenGL®-funktionskald inden for sin egen kode. Naturen af OpenGL®-biblioteket betyder, at der virkelig ikke var nogen støtte til en objektorienteret version af API, og de fleste programmer kaldte funktionerne, som de blev skrevet, uden for en klasse. Efterhånden som objektorienterede sprog blev mere udbredt, syntes forskellige OpenGL®-klassebiblioteker at fungere som indpakningsobjekter for kernebiblioteket. Der er fordele ved at bruge en OpenGL®-klasse, der er fuldt ud realiseret i stedet for kun samlingen af funktioner, der leveres i biblioteket, inklusive indkapsling og en måde at udlede nye funktionelle klasser gennem arv, samtidig med at man beskytter den grundlæggende implementering. Ikke alle udviklere bruger et OpenGL®-klassebibliotek, fordi det kan være forvirrende at skifte til fuldt objektorienteret programmeringsparadigmer.
I objektorienteret programmering er en klasse en samling af data, variabler og funktioner, kaldet metoder, som ændrer den information, den indeholder. Oprindelsen af OpenGL® som et bibliotek med funktioner til C-programmeringssprog, som ikke var et objektorienteret sprog, betyder nogle af de metoder og programmeringspraksis, der blev udviklet, ikke var velegnet til objektorienteret programmering. Da nogle operativsystemer og andre enheder begyndte at stole mere på objektorienterede sprog, kom flere OpenGL®-klassebiblioteker til.
Nogle af OpenGL®-klassebibliotekerne indkapslede simpelthen de grundlæggende OpenGL®-funktioner. Dette gav en sikker og kompatibel ramme for programmering. Selvom denne type klasse var nødvendig på nogle sprog, krævede den stadig, at understøttende klasser blev gjort til en funktionel applikation. Virkelig organiserede biblioteker delte faktisk OpenGL®-funktionerne op i en række klasser, hvor hver enkelt administrerer et andet element i biblioteket, såsom gengivelse.
Et antal OpenGL®-klassebiblioteker begyndte at udvide den grundlæggende OpenGL®-motor og begyndte at inkludere mere funktionalitet. Dette omfattede primært en speciel klasse til håndtering af objekter i en scene, kaldet en scenegraf. Disse klasser fungerede som indpakning til kernebibliotekerne, mens de leverede en logisk struktur, der kunne bygges på for at lave et program, der gjorde mere end at gøre en scene og exit uden at skulle opfinde en ny OpenGL®-ramme hver gang.
Næsten hvert OpenGL®-bibliotek, inklusive hjælpebiblioteker, er på en eller anden måde blevet oversat til en objektorienteret form. Dette har i nogle tilfælde gjort det lettere for udviklere at holde OpenGL® opdateret på de forskellige enheder, der findes ved at danne en for det meste ensartet plan for, hvordan man implementerer OpenGL® i et objektorienteret miljø. Med tilføjelsen af objektorienterede udviklingsværktøjer har det også gjort det muligt at trække og slippe en OpenGL®-klasse til et program, der understøtter visuel udvikling, hvilket forenkler nogle af de mere komplicerede aspekter.