OpenGL/OpenGL:n käyttöönotto
Oppiminen on helpointa käytännössä. OpenGL ja GLUT otetaan käyttöön erilaisissa käyttöjärjestelmissä erilaisin tavoin, joten ohjelmoimaan pääseminen saattaa kestää tovin. Tämän luvun tarkoitus on auttaa alkuun.
Testiohjelma
[muokkaa | muokkaa wikitekstiä]Alla on OpenGL:ää ja GLUT-kirjastoa käyttävä C-kielinen testiohjelma. Se luo ikkunan, jossa on mustalla pohjalla valkoinen kolmio.
/* testiohjelma.c */ /* Windows ehkä tarvitsee <windows.h>:n ennen <GL/gl.h>:ta */ #include <GL/gl.h> #include <GL/glu.h> #include <GL/glut.h> /* Täyttää OpenGL-näkymän alustuksen yhteydessä valitulla värillä * ja piirtää valkoisen kolmion. GLUT kutsuu funktiota aina, kun * ikkunan sisältö täytyy piirtää. */ void piirto(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glBegin(GL_TRIANGLES); glVertex3f (-1.0, -1.0, 0.0); glVertex3f (1.0, -1.0, 0.0); glVertex3f (0.0, 1.0, 0.0); glEnd(); glFlush(); } /* Tätä kutsutaan ennen piirtofunktiota. Asettaa ruudun * tyhjennykseen käytettäväksi väriksi mustan. */ void alustus(void) { glClearColor(0.0, 0.0, 0.0, 0.0); } /* Luo ikkunan GLUT-kirjaston avulla ja jää silmukkaan, joka * loppuu vasta kun ikkuna suljetaan. */ int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(300, 300); glutInitWindowPosition(100, 100); glutCreateWindow("Ikkunan otsikko"); alustus(); glutDisplayFunc(piirto); glutMainLoop(); return 0; }
OpenGL-komennot käydään läpi myöhemmin; main-funktion GLUT-käskyt selittänevät itse itsensä. Jatkossa GLUT-kirjastoa ei käsitellä kuin pintapuolisesti, vaan keskitymme alustus- ja piirtofunktioihin.
Kääntäminen
[muokkaa | muokkaa wikitekstiä]Jotta testiohjelma kääntyisi:
- Kääntäjän on löydettävä otsaketiedostot <GL/gl.h>, <GL/glu.h> ja <GL/glut.h>.
- Vastaavat tuontikirjastot täytyy linkittää mukaan ohjelmaan. Nimet vaihtelevat: Unix-kloonien GL on Windowsissa opengl32.lib.
- Windowsissa tarvittavat tiedostot tulevat ainakin Windows SDK/Platform SDK:n mukana. Voi olla, että tällöin <windows.h> täytyy sisällyttää ennen <GL/gl.h>:ta.
- Joskus GLUT joudutaan asentamaan erikseen.
Unixit ja GCC
[muokkaa | muokkaa wikitekstiä]Tyypillisissä Unix-klooneissa OpenGL, GLU ja GLUT saadaan mukaan, kun ohjelma käännetään seuraavasti:
gcc -lGL -lGLU -lglut -o testiohjelma testiohjelma.c
GCC sekä OpenGL:llä ja freeglutilla ohjelmointiin tarkoitetut paketit tulee olla asennettu. Jos ylläoleva epäonnistuu tai et osaa, kysy tietokoneen ylläpitäjiltä, jakelusi keskustelualueelta tai etsi ohjeita.
Microsoft Visual C++ Express 2005
[muokkaa | muokkaa wikitekstiä]OpenGL:n tiedostoja ei tule kääntäjän mukana, vaan tarvitset Internetistä Platform SDK:n tai Windows SDK:n. Älä hämäänny, vaikka se näyttäisi olevan tarkoitettu Windows Server 2003:lle. Lisää kääntäjän hakemistoihin SDK:n Bin-, Include- ja Lib-hakemistot (executable, include ja library vastaavasti).
OpenGL-projektiksi on paras valita Win32 Console Application ja Empty Project. Ota OpenGL, GLU ja GLUT käyttöön lisäämällä kirjastoiksi opengl32.lib, glu32.lib ja glut32.lib.
(Voi olla, että GLUT-kirjasto täytyy hakea Internetistä? Silloin kannattaa kopioida .lib-tiedosto Lib-hakemistoon, .h-tiedosto Include-hakemistoon ja .dll Windows/System32-hakemistoon. Ehkä jotkut seuraavista: kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib tarvitaan? Code generation: Multi-threaded DLL?)
Muut kääntäjät
[muokkaa | muokkaa wikitekstiä]Lisää tietosi OpenGL:n käytöstä muilla kääntäjillä!
Harjoituksia
[muokkaa | muokkaa wikitekstiä]- Käännä testiohjelma omalla tietokoneellasi.
- Ota selvää, miten jaettuja eli ajonaikaisesti/dynaamisesti linkitettyjä kirjastoja luodaan ja käytetään kääntäjälläsi.
- Ota selvää, mihin OpenGL-versioon otsaketiedostosi on tarkoitettu.