Che cos'è una classe OpenGL®?
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 le chiamate di funzione OpenGL® all'interno del proprio codice. La natura della libreria OpenGL® significa che in realtà non c'era supporto per una versione dell'API orientata agli oggetti e la maggior parte dei programmi chiamava le funzioni così come erano scritte, al di fuori di una classe. Man mano che i linguaggi orientati agli oggetti diventavano sempre più diffusi, diverse librerie di classi OpenGL® sembravano fungere da oggetti wrapper per la libreria principale. Ci sono vantaggi nell'utilizzare 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ò essere fonte di 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 che contiene. Le origini di OpenGL® come libreria di funzioni per il linguaggio di programmazione C, che non era un linguaggio orientato agli oggetti, indicano che alcune delle metodologie e delle pratiche di programmazione sviluppate non erano adatte alla programmazione orientata agli oggetti. Quando alcuni sistemi operativi e altri dispositivi hanno iniziato a fare maggiormente affidamento sui linguaggi orientati agli oggetti, sono nate diverse librerie di classi OpenGL®.
Alcune librerie di classi OpenGL® hanno semplicemente incapsulato le funzioni di base OpenGL®. 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 diventassero un'applicazione funzionale. Le librerie veramente organizzate dividono effettivamente le funzioni OpenGL® in una serie di classi, ognuna delle quali gestisce un diverso elemento della libreria, come il rendering.
Numerose librerie di classi OpenGL® hanno iniziato ad espandersi sul motore OpenGL® di base e hanno iniziato a includere più funzionalità. Questo includeva principalmente una classe speciale per la gestione degli oggetti in una scena, chiamata grafico della scena. Queste classi hanno agito da wrapper per le librerie core fornendo allo stesso tempo una struttura logica su cui costruire un programma che ha fatto più che renderizzare una scena e uscire senza dover inventare un nuovo framework OpenGL® ogni volta.
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 modello 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 permesso di trascinare e rilasciare una classe OpenGL® in un programma che supporta lo sviluppo visivo, semplificando alcuni degli aspetti più complicati.