OpenGL/Mikä OpenGL on?

OpenGL (Open Graphics Library) on ohjelmointirajapinta, jolla käytetään tietokoneen grafiikkaprosessoria. Rajapinnan takana on itse kirjasto, OpenGL-toteutus eli näytönohjainvalmistajan kirjoittama laiteajuri.

Toisin kuin tyypillinen ajuri, OpenGL tarjoaa ohjelmoijalle muutamia ylimääräisiä palveluja käytön helpottamiseksi. Rajapinta on standardoitu, joten sitä voidaan käyttää useissa käyttöjärjestelmissä ja laitteissa. Kirjasto on C-kielinen, mutta sitä voidaan käyttää myös useissa muissa kielissä.

Pelien lisäksi OpenGL:ää käytetään muun muassa tieteelliseen visualisointiin, esitysgrafiikkaan ja 3d-mallinnukseen.

Fyysisesti OpenGL on kolme tiedostoa

muokkaa

C-ohjelmoijalle OpenGL on otsaketiedosto <GL/gl.h> ja sitä vastaava tuontikirjasto (engl. import library). Otsaketiedostossa on määritelty OpenGL:n komennot sekä vakiot. Tuontikirjasto linkittää automaattisesti näytönohjainvalmistajan kirjoittaman OpenGL-toteutuksen, kun ohjelma käynnistetään.

Täytyy siis huolehtia, että:

  • kääntäjä löytää otsaketiedoston <GL/gl.h>
  • tuontikirjasto opengl linkitetään ohjelmaan

Nämä tiedostot tulevat kääntäjän, käyttöjärjestelmän tai käyttöjärjestelmän kehittäjille tarkoitetun paketin mukana. Sen sijaan ohjelman käyttäjän tulee huolehtia, että järjestelmään on asennettu näytönohjainvalmistajan OpenGL-ajuri eli -toteutus. Se on tuontikirjaston kaipaama vastakappale.

Tarvittavat apukirjastot

muokkaa

OpenGL:n vastuulla ei ole esimerkiksi luoda uusia ikkunoita, vaihtaa näyttötilaa tai lukea kuvatiedostoja. Tällaiset toiminnot eivät kuulu laiteajurille. Sovellusohjelman onkin hoidettava nämä asiat toisin keinoin: käyttämällä Windowsin omaa käyttöliittymäkirjastoa, Unixin GLX-rajapintaa tai jotakin muuta.

Tämä opas käyttää ”jotakin muuta”: GLUT-kirjastoa (OpenGL Utility Toolkit), jonka tarkoituksena on helpottaa yksinkertaisten OpenGL-sovellusten ohjelmointia. Se tulee joskus OpenGL:n mukana, ja vapaa toteutus freeglut on olemassa. GLUT ei yleensä sovi oikeisiin ohjelmiin: Esimerkiksi SDL on parempi peleihin ja wxWidgets tai GTK+ graafisiin käyttöliittymiin. Joustavinta on toki käyttää käyttöjärjestelmän omaa grafiikkakirjastoa. Tämän oppaan liitteenä on esimerkkikoodia aiheesta ”miten pärjätään ilman GLUT-kirjastoa”.

Lisäksi olennainen osa OpenGL:ää on GLU-kirjasto (OpenGL Utility Library), joka sisältää muutaman helpottavan komennon. GLU tulee lähes aina OpenGL:n mukana.