Mis vahe on OpenGL®-il ja Direct3D-l?

Open Graphics Library® (OpenGL®) ja Direct3D arvutigraafika teekide vahel on mitmeid erinevusi, kuigi need kõik pole programmeerijatele ja lõppkasutajatele ilmsed. Suurim erinevus seisneb selles, kuidas iga graafikateeki arendatakse ja hooldatakse. OpenGL®-i arendab suures osas erinevatest huvitatud osapooltest koosnev konsortsium ning Direct3D-i arendab ja hooldab Microsoft®. Direct3D on oma juurutamisel samuti täielikult patenteeritud, samas kui OpenGL® järgib suures osas avatud standardit, välja arvatud mõned patenteeritud riistvararutiinid. Viimane peamine erinevus OpenGL®-i ja Direct3D-teekide vahel on nende toetatud platvormid, kuna OpenGL® töötab mitmesugustel platvormidel ja keeltel, samas kui Direct3D töötab ainult Microsoft® Windows®-põhistes süsteemides.

1990. aastate alguses või keskpaigas, kui nii OpenGL® kui ka Direct3D said arvutiprogrammeerijatele kättesaadavaks, olid aluseks olevad raamistikud suured erinevused. Aja edenedes ja graafilise riistvara muutudes levinumaks ja odavamaks, võeti kasutusele palju täiustatud funktsioone, mida mõlemad teegid pidid toetama, et jääda asjakohaseks. Lõpuks viis OpenGL® ja Direct3D vaheline tunnetatud konkurents selleni, et mõlemal teegil on peaaegu identsed võimed, kuigi mõned väikesed erinevused on endiselt olemas. Enamik lõppkasutajaid ei tea, kas seadmes või rakenduses kasutatakse OpenGL®-i või Direct3D-d, ja suur hulk 3D-programme toetab tegelikult mõlemat teeki.

Üks suurimaid ja vältimatumaid erinevusi OpenGL® ja Direct3D vahel on platvormid, millel need töötavad. Direct3D on osa Microsoft® Windows® tarkvaraarenduskomplektist (SDK), seega tugineb see spetsiaalselt komponentidele, mida leidub ainult Windows® operatsioonisüsteemis ja selle tuletistes. OpenGL® seevastu on üldiselt välja töötatud platvormideüleseks ja tugineb võimalikult vähe konkreetsetele funktsioonidele. Mõned programmid on välja töötatud selleks, et võimaldada Direct3D-l töötada operatsioonisüsteemides väljaspool Windows®, kuigi funktsionaalsus on tavaliselt oluliselt vähenenud.

Programmeerimise vaatenurgast on raamatukogude vahel üldine disainierinevus. OpenGL® kipub graafika riistvara kasutamist abstraktselt võtma, võimaldades programmeerijatel kasutada joonistamiseks põhifunktsioonide komplekti, mis seejärel tugineb riistvarale otse juurdepääsuks draiveritele. Direct3D nõuab programmeerijalt kirjutatava programmi riistvara teatud aspektide haldamist, mis võib muuta Direct3D programmi keerukamaks, kuid pakub ka paindlikumat ressursside haldamist. Lõppkokkuvõttes on OpenGL®-iga lihtsam programme kirjutada, kuid riistvaratootjatel on keerulisem draivereid kirjutada. Alternatiivina on Direct3D-l Microsoft® saadaval suur hulk tööriistu ja tuge, kuid selle kasutamiseks on vaja rohkem riistvara- ja programmeerimisalaseid teadmisi.

Viimane erinevus OpenGL® ja Direct3D vahel on viis, kuidas suuremate standardväljaannete vahele lisatakse uued riistvara- ja keelefunktsioonid. OpenGL®-i kaudu saavad riistvaratootjad rakendada erifunktsioone, mida tuntakse laiendustena ja mis pakuvad kohest juurdepääsu uue riistvara ainulaadsetele funktsioonidele. Direct3D puhul tuleb neid funktsioone töödelda Microsoft® kaudu, mis seejärel vabastab uued funktsioonid ametlike turustuskanalite kaudu. OpenGL®-i lähenemine võimaldab uusi funktsioone kiiresti kasutada, kuid vähendab laiendusi kasutava programmi üldist ühilduvust, samas kui Direct3D lähenemine on aeglasem, kuid võib tagada ühilduvuse erinevate süsteemide vahel.