Care sunt diferitele tipuri de drivere OpenGL®?

OpenGL®, limbajul de grafică deschis, este un standard open source și o interfață de programare abstractă (API) pentru programarea graficelor tridimensionale (3D) în programe de calculator. Pentru ca API-ul să funcționeze atunci când este compilat și rulat, computerul care execută programul trebuie să aibă instalate driverele OpenGL® corecte. Există multe tipuri de drivere, dar toate au scopul singular de a acționa ca o interfață între codul care este scris folosind API-ul OpenGL® și hardware-ul care redă grafica. Driverele OpenGL® nu sunt dezvoltate sau lansate de persoanele care întrețin API-ul OpenGL®; acestea sunt în schimb eliberate de producătorii hardware-ului din interiorul computerului. Singura diferență, în realitate, între diferitele tipuri de drivere OpenGL® este codul hardware-ului cu care se interfață.

Standardul pentru OpenGL® a devenit în cele din urmă o platformă unificată, simplă și, în mare parte, o implementare independentă de limbaj a funcțiilor grafice 3D de bază, care ar putea fi folosită ca o modalitate la un nivel foarte scăzut de interfață cu hardware-ul. A progresat în această direcție datorită unui număr tot mai mare de API-uri 3D proprietare, fiecare având filozofii de design și semnături de funcție diferite. API-ul a fost adoptat deopotrivă de programatori și producători de hardware, deoarece era open source și nu necesita achiziționarea unei licențe pentru utilizare, așa cum făceau alte sisteme de operare sau API-uri specifice limbii.

Driverele de bază OpenGL® sunt produse de producătorii de plăci grafice, plăci de expansiune și acceleratoare grafice. Aceasta înseamnă că fiecare driver este scris în conformitate cu specificațiile exacte și precise pentru hardware-ul țintă și că hardware-ul poate fi fabricat cu optimizări orientate către driver pentru a crește performanța. Acceptarea pe scară largă a API-ului și costul general relativ scăzut care vine odată cu acesta l-au făcut o alegere valoroasă pentru aplicațiile grafice de înaltă performanță și, la rândul lor, i-au determinat pe producătorii de hardware să depună eforturi pentru optimizări de nivel scăzut pentru a completa această performanță cu cardurile lor. .

Ca răspuns la eforturile producătorilor de hardware, dezvoltatorii OpenGL® au oferit un mecanism care le-ar permite driverelor să implementeze operațiuni personalizate care ar putea fi codificate în driverele OpenGL®. Aceste caracteristici speciale ale diferitelor piese hardware ar putea fi incluse în API-ul OpenGL®. Acest lucru ar permite unui producător să aibă o placă grafică care acceptă funcții accelerate hardware, cum ar fi algoritmii de simulare a fabricii, și ar permite API-ului OpenGL® să apeleze și să interfațeze cu această funcționalitate. Aceste extensii au oferit un mecanism prin care driverele OpenGL® și API-ul puteau deveni un mecanism fluid și extensibil pentru programarea grafică 3D.

Începând cu 2011, driverele OpenGL® sunt individuale pentru fiecare componentă hardware care acceptă standardul. Nu poate exista un singur driver unificat, deoarece fiecare piesă de hardware este diferită și, uneori, folosește informații proprietare. Aceasta înseamnă că, deși din punct de vedere tehnic există multe tipuri de drivere OpenGL® — câte unul pentru fiecare card hardware — toate îndeplinesc exact aceeași funcție din perspectiva programării.