Koje su razlike između OpenGL® i Direct3D?

Postoji nekoliko razlika između knjižnica Open Graphics Library® (OpenGL®) i Direct3D knjižnica računalne grafike, iako nisu sve očite programerima i krajnjim korisnicima. Najveća razlika je u tome kako se svaka od grafičkih knjižnica razvija i održava, pri čemu OpenGL® uglavnom razvija konzorcij različitih zainteresiranih strana, a Direct3D razvija i održava Microsoft®. Direct3D je također potpuno zaštićen u svojoj implementaciji, dok OpenGL® slijedi uglavnom otvoreni standard, s izuzetkom nekih patentiranih hardverskih rutina. Konačna glavna razlika između OpenGL® i Direct3D knjižnica nalazi se u njihovim podržanim platformama, jer OpenGL® radi na raznim platformama i jezicima, dok Direct3D radi samo na sustavima baziranim na Microsoft® Windows®.

Početkom do sredine 1990-ih, kada su i OpenGL® i Direct3D postali dostupni računalnim programerima, postojala je velika razlika u temeljnim okvirima. Kako je vrijeme odmicalo, a grafički hardver postajao sve prisutniji i jeftiniji, uvedene su mnoge napredne značajke koje su obje knjižnice morale podržavati kako bi ostale relevantne. Konačno, percipirana konkurencija između OpenGL® i Direct3D dovela je do toga da obje knjižnice imaju gotovo identične sposobnosti, iako neke manje razlike još uvijek postoje. Većina krajnjih korisnika nije svjesna koristi li se OpenGL® ili Direct3D u uređaju ili aplikaciji, a velika količina 3D programa zapravo sadrži podršku za obje biblioteke.

Jedna od najvećih i najneizbježnijih razlika između OpenGL® i Direct3D je platforme na kojima će raditi. Direct3D je dio kompleta za razvoj softvera Microsoft® Windows® (SDK), tako da se posebno oslanja na komponente koje se nalaze samo u operacijskom sustavu Windows® i njegovim derivatima. OpenGL® je, s druge strane, općenito razvijen kako bi bio višeplatformski i što je manje moguće oslanja se na specifične operativne funkcije. Neki su programi razvijeni kako bi omogućili Direct3D rad na operativnim sustavima izvan Windows®, iako je funkcionalnost obično znatno smanjena.

Iz perspektive programiranja, postoji opća razlika u dizajnu između knjižnica. OpenGL® nastoji apstrahirati korištenje grafičkog hardvera, dopuštajući programerima korištenje temeljnog skupa funkcija za crtanje koje se zatim oslanja na upravljačke programe za izravan pristup hardveru. Direct3D zahtijeva od programera da upravlja određenim aspektima hardvera unutar programa koji se piše, što može učiniti Direct3D program složenijim, ali također pruža fleksibilnije upravljanje resursima. U konačnici, OpenGL® je lakše pisati programe, ali je proizvođačima hardvera teže pisati upravljačke programe. Alternativno, Direct3D ima veliku količinu alata i podrške dostupne od Microsofta, ali zahtijeva više znanja o hardveru i programiranju za korištenje.

Konačna razlika između OpenGL® i Direct3D je način na koji se novi hardver i jezične značajke dodaju između glavnih standardnih izdanja. Kroz OpenGL®, proizvođači hardvera mogu implementirati posebne funkcije poznate kao proširenja koja mogu pružiti trenutni pristup jedinstvenim značajkama novog hardvera. Uz Direct3D, ove značajke moraju se obraditi putem Microsofta®, koji zatim objavljuje nove funkcije putem službenih kanala distribucije. OpenGL® pristup omogućuje brzu upotrebu novih značajki, ali smanjuje ukupnu kompatibilnost programa koji koristi proširenja, dok je Direct3D pristup sporiji, ali može jamčiti kompatibilnost na različitim sustavima.