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 | muokkaa wikitekstiä]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 | muokkaa wikitekstiä]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.