Előadás Home Introduction Environment setup Best homeworks

Környezet telepítése

Ahhoz, hogy használni tudjuk az OpenGL-t először inicializálnunk kell, vagyis létre kell hoznunk egy OpenGL context-et és egy window-t amire rajzolni tudunk. A context lényegében egy állapot gép, ami tárolja az összes rendereléssel kapcsolatos adatot. Amikor az applikáció bezárul, akkor a context is megsemmisül és az összes adat törlődik a memóriából.

Az OpenGL célja, hogy minél inkább platform független legyen, ezért a context és a window létrehozása nem része az OpenGL-nek, hiszen ezek az adott operációs rendszertől függenek. Ezért ezt minden operációs rendszeren máshogy kell megtenni, de szerencsére számos erre a célra fejlesztett library létezik. A legismertebbek az SFML, SDL és a GLFW. Mi a GLFW library-t fogjuk használni.

GLFW

A GLFW egy light weight library, melyet C nyelven írtak és csak a legszükségesebb dolgokat tartalmazza. Létre hozhatunk vele egy context-et és egy window-t, továbbá kezelhetjük a felhasználó keyboard és mouse eseményeit.


GLAD

Az OpenGL csak egy specifikáció és a tényleges implementáció a videó kártya gyártóktól függ. Mivel számos OpenGL driver létezik, ezért a legtöbb függvény lokációját nem tudjuk fordítási időben, ezért futás időben szükséges azt lekérdezni. Ezért a fejlesztőnek kell lekérdezni a függvényt és eltárolni azt egy függvény pointer-ben a későbbi használathoz.

Azonban ez a folyamat operációs rendszer specifikus, ami pl. Windows-on így néz ki:

In [ ]:
// define the function's prototype
  typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
  // find the function and assign it to a function pointer
  GL_GENBUFFERS glGenBuffers  = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
  // function can now be called as normal
  unsigned int buffer;
  glGenBuffers(1, &buffer);
  

Ez elég komplex lehet, és máshogy működik a különböző rendszereken, de szerencsére több erre a célre fejlesztett library létezik (GLAD, GLEW). Mi a GLAD library-t fogjuk használni.

Install GLAD

A GLAD telepítéséhez egy webservice-en keresztül kell konfigurálni a használni kívánt GLAD verziót, majd a webservice legenerálja nekünk a megfelelő verziót, melyet egy zip formájában letölthetünk. Válasszuk ki a C++, lehetőséget, az OpenGL verziónál 3.3 vagy annál nagyobbat válasszunk ki (érdemes a lehető legnagyobbat kiválasztani, amit a videó kártyánk támogat). A profile opciót állítsuk Core-ra és jelöljük ki a Generate a loader opciót, végül kattintsunk a Generate gombra.

A letöltött zip fájl két include könyvtárat és egy glad.c nevű fájlt tartalmaz. Másoljuk a glad és a KHR mappákat az include könyvtárba és a glad.c fájlt addjuk hozzá a projektünkhöz.


GLM (OpenGL Mathematics)

Az OpenGL nem tartalmaz beépített vektor és mátrix osztályokat, azonban a számos transzformáció leírásához gyakran használjuk őket. A GLM egy könnyen használható matematikai library kifejezetten az OpenGL igényeihez fejlesztve. A GLM egy header-only library, ami azt jelenti, hogy nem kell fordítani és linkelni, egyszerűen csak le kell tölteni és másoljuk a header fájlok root könyvtárát az include könyvtárba.

Új projekt létrehozása Xcode-ban

Nyissuk meg az Xcode-ot és hozzunk létre egy új projektet. Válasszuk ki a Command Line Tool opciót, majd kattintsunk a Next gombra és válasszuk a C++ lehetőséget és adjunk egy nevet a projektnek.

title

Kattintsunk a projekt nevére és válasszuk ki a Build Setting tabot, ahol a Basic opciót állítsuk át All opcióra. A Search Paths sekciónál adjuk hozzá a /usr/local/include változót a Header Search Paths-hoz és adjuk hozzá a /usr/local/lib változót a Library Search Paths-hoz.

title

Válasszuk ki a Build Phases tabot, majd a Link With Binary Libraries opciót. Itt adjuk hozzá a projekthez az OpenGL.framework változót, továbbá az /usr/local/lib helyről a GLFW és GLEW lib fájlokat.

title

Most már készen állunk az első OpenGL alkalmazás elkészítéséhez.