Ce este o clasă OpenGL®?

O clasă OpenGL® se poate referi fie la o implementare orientată pe obiect a unor părți ale interfeței de programare abstractă (API) OpenGL®, fie la o clasă care utilizează apeluri de funcție OpenGL® în propriul cod. Natura bibliotecii OpenGL® înseamnă că într-adevăr nu a existat suport pentru o versiune orientată pe obiect a API-ului, iar majoritatea programelor numeau funcțiile așa cum au fost scrise, în afara unei clase. Pe măsură ce limbajele orientate pe obiect au devenit mai răspândite, diferite biblioteci de clasă OpenGL® au părut să acționeze ca obiecte de înveliș pentru biblioteca de bază. Există avantaje în utilizarea unei clase OpenGL® care a fost realizată pe deplin în loc de doar colecția de funcții furnizată în bibliotecă, inclusiv încapsularea și o modalitate de a deriva noi clase funcționale prin moștenire, protejând în același timp implementarea de bază. Nu toți dezvoltatorii folosesc o bibliotecă de clasă OpenGL®, deoarece poate fi confuz să treci la paradigme de programare complet orientate pe obiecte.

În programarea orientată obiect, o clasă este o colecție de date, variabile și funcții, numite metode, care modifică informațiile pe care le conține. Originile OpenGL® ca o bibliotecă de funcții pentru limbajul de programare C, care nu era un limbaj orientat pe obiecte, înseamnă că unele dintre metodologiile și practicile de programare dezvoltate nu erau potrivite pentru programarea orientată pe obiecte. Când unele sisteme de operare și alte dispozitive au început să se bazeze mai mult pe limbaje orientate pe obiecte, au apărut mai multe biblioteci de clasă OpenGL®.

Unele dintre bibliotecile de clasă OpenGL® au încapsulat pur și simplu funcțiile de bază OpenGL®. Acest lucru a oferit un cadru sigur și compatibil pentru programare. Deși acest tip de clasă era necesar pentru unele limbi, totuși necesita ca clasele suport să fie transformate într-o aplicație funcțională. Bibliotecile cu adevărat organizate au împărțit de fapt funcțiile OpenGL® într-o serie de clase, fiecare gestionând un element diferit al bibliotecii, cum ar fi randarea.

Un număr de biblioteci de clasă OpenGL® au început să se extindă pe motorul de bază OpenGL® și au început să includă mai multe funcționalități. Aceasta a inclus în primul rând o clasă specială pentru manipularea obiectelor dintr-o scenă, numită grafic al scenei. Aceste clase au acționat ca pachete pentru bibliotecile de bază, oferind în același timp o structură logică pe care ar putea fi construită pentru a crea un program care a făcut mai mult decât să reda o scenă și să iasă fără a fi nevoie să inventeze un nou cadru OpenGL® de fiecare dată.

Aproape fiecare bibliotecă OpenGL®, inclusiv bibliotecile utilitare, a fost tradusă într-un fel sau altul într-o formă orientată pe obiecte. Acest lucru a făcut, în unele cazuri, mai ușor pentru dezvoltatori să mențină OpenGL® actualizat pe diferitele dispozitive care există, formând un model în mare parte uniform pentru modul de implementare a OpenGL® într-un mediu orientat pe obiecte. Odată cu adăugarea instrumentelor de dezvoltare orientate pe obiecte, a făcut posibilă, de asemenea, tragerea și plasarea unei clase OpenGL® într-un program care acceptă dezvoltarea vizuală, simplificând unele dintre aspectele mai complicate.