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.