Una classe OpenGL® può fare riferimento a un’implementazione orientata agli oggetti di parti dell’interfaccia di programmazione astratta (API) OpenGL® o a una classe che utilizza chiamate di funzione OpenGL® all’interno del proprio codice. La natura della libreria OpenGL® significa che non c’era davvero alcun supporto per una versione dell’API orientata agli oggetti e la maggior parte dei programmi chiamava le funzioni mentre venivano scritte, al di fuori di una classe. Man mano che i linguaggi orientati agli oggetti diventavano più diffusi, diverse librerie di classi OpenGL® sembravano fungere da oggetti wrapper per la libreria principale. Ci sono vantaggi nell’usare una classe OpenGL® che è stata completamente realizzata invece della semplice raccolta di funzioni fornite nella libreria, incluso l’incapsulamento e un modo per derivare nuove classi funzionali attraverso l’ereditarietà proteggendo l’implementazione di base. Non tutti gli sviluppatori utilizzano una libreria di classi OpenGL®, perché può creare confusione passare a paradigmi di programmazione completamente orientati agli oggetti.
Nella programmazione orientata agli oggetti, una classe è una raccolta di dati, variabili e funzioni, chiamati metodi, che modificano le informazioni in essa contenute. Le origini di OpenGL® come libreria di funzioni per il linguaggio di programmazione C, che non era un linguaggio orientato agli oggetti, significa che alcune delle metodologie e pratiche di programmazione sviluppate non erano adatte alla programmazione orientata agli oggetti. Quando alcuni sistemi operativi e altri dispositivi hanno iniziato a fare affidamento maggiormente sui linguaggi orientati agli oggetti, sono nate diverse librerie di classi OpenGL®.
Alcune delle librerie di classi OpenGL® incapsulano semplicemente le funzioni OpenGL® di base. Ciò ha fornito un quadro sicuro e compatibile per la programmazione. Sebbene questo tipo di classe fosse necessario per alcune lingue, richiedeva comunque che le classi di supporto fossero trasformate in un’applicazione funzionale. Le librerie veramente organizzate dividono le funzioni OpenGL® in una serie di classi, ognuna delle quali gestisce un diverso elemento della libreria, come il rendering.
Un certo numero di librerie di classi OpenGL® ha iniziato ad espandersi sul motore OpenGL® di base e ha iniziato a includere più funzionalità. Ciò includeva principalmente una classe speciale per la gestione degli oggetti in una scena, chiamata grafico della scena. Queste classi fungevano da wrapper per le librerie principali fornendo una struttura logica su cui si poteva costruire un programma che facesse più che rendere una scena e uscire senza dover inventare ogni volta un nuovo framework OpenGL®.
Quasi tutte le librerie OpenGL®, comprese le librerie di utilità, sono state tradotte in un modo o nell’altro in una forma orientata agli oggetti. Ciò ha, in alcuni casi, reso più semplice per gli sviluppatori mantenere OpenGL® aggiornato sui vari dispositivi esistenti, formando un progetto per lo più uniforme su come implementare OpenGL® in un ambiente orientato agli oggetti. Con l’aggiunta di strumenti di sviluppo orientati agli oggetti, ha anche reso possibile trascinare e rilasciare una classe OpenGL® in un programma che supporta lo sviluppo visivo, semplificando alcuni degli aspetti più complicati.