Mitä eroja OpenGL®: n ja Direct3D: n välillä on?

Open Graphics Library® (OpenGL®) – ja Direct3D -tietokonegrafiikkakirjastojen välillä on useita eroja, vaikka kaikki eivät ole ilmeisiä ohjelmoijille ja loppukäyttäjille. Suurin ero on siinä, miten kukin grafiikkakirjasto on kehitetty ja ylläpidetty, ja OpenGL®: ää kehittää suurelta osin eri sidosryhmien yhteenliittymä, ja Direct3D: tä kehittää ja ylläpitää Microsoft®. Direct3D on myös täysin oma toteutuksensa, kun taas OpenGL® noudattaa suurelta osin avointa standardia, lukuun ottamatta joitain patentoituja laitteistokäytäntöjä. Viimeinen merkittävä ero OpenGL®- ja Direct3D-kirjastojen välillä löytyy niiden tuetuista alustoista, koska OpenGL® toimii useilla alustoilla ja kielillä, kun taas Direct3D toimii vain Microsoft® Windows® -pohjaisissa järjestelmissä.

1990-luvun alussa ja puolivälissä, kun sekä OpenGL® että Direct3D tulivat tietokoneohjelmoijien saataville, taustalla olevissa kehyksissä oli suuri ero. Ajan edetessä ja graafisen laitteiston yleistyminen ja halvempi hinta esittivät monia kehittyneitä ominaisuuksia, joita molemmat kirjastot tarvitsevat tukea pysyäkseen tärkeinä. Lopulta OpenGL®: n ja Direct3D: n välinen kilpailu johti siihen, että molemmilla kirjastoilla oli lähes identtiset kyvyt, vaikka pieniäkin eroja on edelleen. Useimmat loppukäyttäjät eivät tiedä, käytetäänkö OpenGL®- tai Direct3D -laitetta tai -sovellusta, ja suuri määrä 3D -ohjelmia todella tukee molempia kirjastoja.

Yksi suurimmista ja väistämättömistä eroista OpenGL®: n ja Direct3D: n välillä on alustat, joilla ne toimivat. Direct3D on osa Microsoft® Windows® -ohjelmistokehityspakettia (SDK), joten se perustuu erityisesti komponentteihin, joita löytyy vain Windows® -käyttöjärjestelmästä ja sen johdannaisista. Toisaalta OpenGL® on kehitetty yleisesti eri alustoille ja se riippuu mahdollisimman vähän tiettyjen toimintojen käytöstä. Jotkin ohjelmat on kehitetty antamaan Direct3D: n toimia Windows® -ulkopuolisissa käyttöjärjestelmissä, vaikka toiminnallisuus yleensä heikkenee huomattavasti.

Ohjelmoinnin näkökulmasta kirjastojen välillä on yleinen suunnitteluero. OpenGL® pyrkii abstraktisti käyttämään grafiikkalaitteistoa, jolloin ohjelmoijat voivat käyttää piirtämiseen ydintoimintoja, jotka sitten tukeutuvat ohjaimiin suoraan laitteistoon. Direct3D vaatii ohjelmoijaa hallitsemaan tiettyjä laitteiston osia kirjoitettavan ohjelman sisällä, mikä voi tehdä Direct3D -ohjelmasta monimutkaisemman, mutta tarjoaa myös joustavamman resurssienhallinnan. Viime kädessä OpenGL® on helpompi kirjoittaa ohjelmia, mutta laitteistovalmistajien on vaikeampi kirjoittaa ohjaimia. Vaihtoehtoisesti Direct3D tarjoaa suuren määrän työkaluja ja tukea Microsoftilta®, mutta vaatii enemmän laitteisto- ja ohjelmointitietoja.

Viimeinen ero OpenGL®: n ja Direct3D: n välillä on tapa, jolla uusia laitteistoja ja kielitoimintoja lisätään tärkeimpien vakiojulkaisujen välille. Laitteistovalmistajat voivat OpenGL®: n avulla ottaa käyttöön erikoisominaisuuksia, joita kutsutaan laajennuksiksi ja jotka voivat tarjota välittömän pääsyn uuden laitteiston ainutlaatuisiin ominaisuuksiin. Direct3D: n avulla nämä ominaisuudet on käsiteltävä Microsoftin® kautta, joka sitten julkaisee uudet toiminnot virallisten jakelukanavien kautta. OpenGL® -lähestymistapa mahdollistaa uusien ominaisuuksien nopean käytön, mutta vähentää laajennuksia käyttävän ohjelman yleistä yhteensopivuutta, kun taas Direct3D -lähestymistapa on hitaampi, mutta voi taata yhteensopivuuden eri järjestelmien välillä.