Kakšne so razlike med OpenGL® in Direct3D?

Med knjižnicami računalniške grafike Open Graphics Library® (OpenGL®) in Direct3D obstaja več razlik, čeprav programerjem in končnim uporabnikom niso vse očitne. Največja razlika je v tem, kako se vsaka od grafičnih knjižnic razvija in vzdržuje, pri čemer OpenGL® večinoma razvija konzorcij različnih zainteresiranih strani, Direct3D pa razvija in vzdržuje Microsoft®. Direct3D je tudi popolnoma zaščiten pri svoji implementaciji, medtem ko OpenGL® sledi pretežno odprtemu standardu, z izjemo nekaterih patentiranih rutin strojne opreme. Zadnja velika razlika med knjižnicami OpenGL® in Direct3D je v njunih podprtih platformah, ker OpenGL® deluje na različnih platformah in jezikih, medtem ko Direct3D deluje samo na sistemih, ki temeljijo na Microsoft® Windows®.

V začetku do sredine devetdesetih let, ko sta OpenGL® in Direct1990D postala na voljo računalniškim programerjem, je prišlo do velike razlike v osnovnih okvirih. Ko je čas napredoval in je grafična strojna oprema postajala vse bolj razširjena in cenejša, so bile uvedene številne napredne funkcije, ki sta jih obe knjižnici morali podpirati, da sta ostali relevantni. Sčasoma je zaznana konkurenca med OpenGL® in Direct3D privedla do tega, da imata obe knjižnici skoraj enake sposobnosti, čeprav še vedno obstajajo nekatere manjše razlike. Večina končnih uporabnikov se ne zaveda, ali se v napravi ali aplikaciji uporablja OpenGL® ali Direct3D, veliko število 3D programov pa dejansko vsebuje podporo za obe knjižnici.

Ena največjih in najbolj neizogibnih razlik med OpenGL® in Direct3D so platforme, na katerih bosta delovala. Direct3D je del kompleta za razvoj programske opreme Microsoft® Windows® (SDK), zato se posebej zanaša na komponente, ki jih najdemo samo v operacijskem sistemu Windows® in njegovih izpeljankah. Po drugi strani je OpenGL® razvit na splošno za več platform in se čim manj zanaša na posebne funkcije delovanja. Nekateri programi so bili razviti tako, da omogočajo Direct3D, da deluje na operacijskih sistemih zunaj Windows®, čeprav je funkcionalnost običajno močno zmanjšana.

Z vidika programiranja obstaja splošna oblikovalska razlika med knjižnicami. OpenGL® nagiba k abstrahiranju uporabe grafične strojne opreme, kar programerjem omogoča uporabo osnovnega nabora funkcij za risanje, ki se nato zanaša na gonilnike za neposreden dostop do strojne opreme. Direct3D zahteva, da programer upravlja določene vidike strojne opreme v programu, ki se piše, kar lahko naredi program Direct3D bolj zapleten, hkrati pa zagotavlja bolj prilagodljivo upravljanje virov. Konec koncev je OpenGL® lažje pisati programe, vendar je proizvajalcem strojne opreme težje pisati gonilnike. Druga možnost je, da ima Direct3D veliko orodij in podpore, ki so na voljo pri Microsoftu, vendar zahteva več znanja strojne opreme in programiranja za uporabo.

Končna razlika med OpenGL® in Direct3D je način dodajanja nove strojne in jezikovne funkcije med glavne standardne izdaje. Z OpenGL® lahko proizvajalci strojne opreme izvajajo posebne funkcije, znane kot razširitve, ki lahko zagotovijo takojšen dostop do edinstvenih funkcij nove strojne opreme. Pri Direct3D je treba te funkcije obdelati prek Microsoft®, ki nato izda nove funkcije prek uradnih distribucijskih kanalov. Pristop OpenGL® omogoča hitro uporabo novih funkcij, vendar zmanjšuje splošno združljivost programa z uporabo razširitev, medtem ko je pristop Direct3D počasnejši, vendar lahko zagotavlja združljivost v različnih sistemih.