Mikä on OpenGL® -luokka?

OpenGL®-luokka voi viitata joko OpenGL®-abstraktin ohjelmointirajapinnan (API) osien olio-toteutukseen tai luokkaan, joka käyttää OpenGL®-funktiokutsuja oman koodinsa sisällä. OpenGL® -kirjaston luonne tarkoittaa, että sovellusliittymän olio -versiota ei todellakaan tuettu, ja useimmat ohjelmat kutsuivat toimintoja sellaisina kuin ne oli kirjoitettu luokan ulkopuolella. Objektiorientoituneiden kielten yleistyessä eri OpenGL® -luokan kirjastot näyttivät toimivan ydinkirjaston kääreobjekteina. Täysin toteutetun OpenGL® -luokan käytöstä on hyötyä vain kirjastossa olevien toimintojen kokoelman sijasta, mukaan lukien kapselointi ja tapa saada uusia toiminnallisia luokkia perimällä samalla suojaamalla peruskäyttöönotto. Kaikki kehittäjät eivät käytä OpenGL® -luokan kirjastoa, koska voi olla hämmentävää siirtyä täysin objektipohjaisiin ohjelmointimalleihin.

Objektisuuntautuneessa ohjelmoinnissa luokka on kokoelma tietoja, muuttujia ja toimintoja, joita kutsutaan menetelmiksi ja jotka muuttavat sen sisältämiä tietoja. OpenGL®: n alkuperä C -ohjelmointikielen funktiokirjastona, joka ei ollut objektiorientoitu kieli, tarkoittaa, että jotkin kehitetyt menetelmät ja ohjelmointikäytännöt eivät sopineet olio -ohjelmointiin. Kun jotkin käyttöjärjestelmät ja muut laitteet alkoivat luottaa enemmän objektiorientoituihin kieliin, syntyi useita OpenGL® -luokan kirjastoja.

Jotkut OpenGL® -luokan kirjastot sisälsivät yksinkertaisesti OpenGL® -perustoiminnot. Tämä tarjosi turvallisen ja yhteensopivan kehyksen ohjelmointiin. Vaikka tämäntyyppinen luokka oli välttämätön joillekin kielille, se edellytti silti tukiluokkien tekemistä toimivaksi sovellukseksi. Todella järjestetyt kirjastot jakoivat OpenGL® -toiminnot sarjaan luokkia, joista jokainen hallinnoi eri kirjaston elementtejä, kuten renderointia.

Useat OpenGL® -luokan kirjastot alkoivat laajentaa OpenGL® -perusmoottoria ja alkoivat sisällyttää enemmän toimintoja. Tämä sisälsi ensisijaisesti erikoisluokan kohtauksen kohteiden käsittelyyn, jota kutsutaan kohtausgraafiksi. Nämä luokat toimivat ydinkirjastojen kääreinä ja tarjosivat samalla loogisen rakenteen, johon voitaisiin rakentaa ohjelma, joka ei pelkästään renderoi kohtausta ja poistu ilman uutta OpenGL® -kehystä joka kerta.

Lähes jokainen OpenGL® -kirjasto, apuohjelmakirjastot mukaan lukien, on käännetty tavalla tai toisella objektipohjaiseen muotoon. Tämä on joissakin tapauksissa helpottanut kehittäjien pitämistä OpenGL®: n ajan tasalla eri olemassa olevista laitteista muodostamalla pääosin yhtenäisen suunnitelman OpenGL®: n toteuttamisesta olioympäristössä. Objektisuuntautuneiden kehittämistyökalujen ansiosta se on myös mahdollistanut OpenGL® -luokan vetämisen ja pudottamisen visuaalista kehitystä tukevaan ohjelmaan, mikä yksinkertaistaa joitakin monimutkaisempia näkökohtia.