Kuo skiriasi OpenGL® ir Direct3D?

Yra keletas skirtumų tarp Open Graphics Library® (OpenGL®) ir Direct3D kompiuterinės grafikos bibliotekų, nors ne visi jie yra akivaizdūs programuotojams ir galutiniams vartotojams. Didžiausias skirtumas yra tai, kaip kiekviena grafikos biblioteka yra kuriama ir prižiūrima: OpenGL® daugiausia kuria įvairių suinteresuotų šalių konsorciumas, o Direct3D kuria ir prižiūri Microsoft®. „Direct3D“ taip pat yra visiškai patentuota, o „OpenGL®“ vadovaujasi iš esmės atviru standartu, išskyrus kai kurias patentuotas aparatinės įrangos procedūras. Paskutinis pagrindinis skirtumas tarp OpenGL® ir Direct3D bibliotekų yra jų palaikomose platformose, nes OpenGL® veikia įvairiose platformose ir kalbomis, o Direct3D veikia tik Microsoft® Windows® sistemose.

Dešimtojo dešimtmečio pradžioje ir viduryje, kai kompiuterių programuotojams tapo prieinami ir OpenGL®, ir Direct1990D, pagrindinės sistemos labai skyrėsi. Laikui bėgant, o grafinė aparatinė įranga tapo vis labiau paplitusi ir pigesnė, buvo pristatyta daug pažangių funkcijų, kurias turėjo palaikyti abi bibliotekos, kad jos išliktų aktualios. Galiausiai dėl konkurencijos tarp OpenGL® ir Direct3D abi bibliotekos turėjo beveik identiškus gebėjimus, nors kai kurie nedideli skirtumai vis dar egzistuoja. Dauguma galutinių vartotojų nežino, ar įrenginyje ar programoje naudojamas OpenGL® arba Direct3D, o daugelis 3D programų iš tikrųjų palaiko abi bibliotekas.

Vienas didžiausių ir neišvengiamiausių OpenGL® ir Direct3D skirtumų yra platformos, kuriose jie veiks. „Direct3D“ yra „Microsoft® Windows®“ programinės įrangos kūrimo rinkinio (SDK) dalis, todėl jis ypač priklauso nuo komponentų, kurie yra tik „Windows®“ operacinėje sistemoje ir jos dariniuose. Kita vertus, „OpenGL®“ yra sukurtas taip, kad veiktų įvairiose platformose ir kuo mažiau priklauso nuo konkrečių funkcijų. Kai kurios programos buvo sukurtos tam, kad „Direct3D“ veiktų ne „Windows®“ operacinėse sistemose, nors funkcionalumas paprastai yra labai sumažintas.

Programavimo požiūriu yra bendras bibliotekų dizaino skirtumas. „OpenGL®“ yra linkęs abstrakčiai naudoti grafinę aparatinę įrangą, todėl programuotojai gali naudoti pagrindinį funkcijų rinkinį piešimui, kuris vėliau priklauso nuo tvarkyklių, kurios tiesiogiai pasiekia aparatinę įrangą. „Direct3D“ reikalauja, kad programuotojas valdytų tam tikrus rašomos programos aparatinės įrangos aspektus, todėl „Direct3D“ programa gali būti sudėtingesnė, bet taip pat suteikia lankstesnį išteklių valdymą. Galiausiai OpenGL® yra lengviau rašyti programas, bet aparatūros gamintojams sunkiau parašyti tvarkykles. Arba „Direct3D“ turi daug „Microsoft®“ siūlomų įrankių ir palaikymo, tačiau norint naudoti reikia daugiau aparatinės įrangos ir programavimo žinių.

Paskutinis skirtumas tarp OpenGL® ir Direct3D yra būdas, kuriuo naujos aparatinės įrangos ir kalbos funkcijos pridedamos prie pagrindinių standartinių leidimų. Naudodami OpenGL®, aparatūros gamintojai gali įdiegti specialias funkcijas, žinomas kaip plėtiniai, kurie gali suteikti tiesioginę prieigą prie unikalių naujos aparatinės įrangos funkcijų. Naudojant „Direct3D“, šias funkcijas reikia apdoroti per „Microsoft®“, kuri išleidžia naujas funkcijas oficialiais platinimo kanalais. OpenGL® metodas leidžia greitai naudoti naujas funkcijas, tačiau sumažina bendrą programos, naudojančios plėtinius, suderinamumą, o „Direct3D“ metodas yra lėtesnis, tačiau gali užtikrinti suderinamumą įvairiose sistemose.