OpenGL/OpenGL:n käyttöönotto

Wikikirjastosta

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.