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

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

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

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

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

Lisää tietosi OpenGL:n käytöstä muilla kääntäjillä!

Harjoituksia

muokkaa
  • 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.