Az OpenGL programok fordításával kapcsolatos információk

Általános információk

    Az OpenGL-nek jelenleg C/C++, ADA, Fortran és Visual Basic implementációja létezik. Ezeken az oldalakon a C/C++ implementációról lesz szó. Az C/C++ programozási nyelven írt OpenGL programokat Windows 9x/NT operációs rendszeren Borland C-vel és Visual C-vel lehet lefordítani. A kettõ közül a Visual C használatát javaslom, nekem az egyszerûbbnek tûnt.
    A Windows NT 3.5-ös verziójának megjelenése óta az OpenGL része az operációs rendszernek, ezért valószínûleg az OpenGL-é a jövõ (az más dolog, hogy a legtöbb 3D-s játékot még mindig egy másik grafikus rendszerben, a Direct3D-ben írják; viszont egy fontos érv az OpenGl mellett, hogy platformfüggetlen). A Windows 98 tehát már tartalmazza az OpenGL programok futtatásához szükséges fájlokat.
    Mint már megjegyeztem, az OpenGL nem tartalmaz az ablakok létrehozását elõsegítõ függvényeket, ezért egy OpenGL program számára szükséges ablakot nekünk kell létrehozni az adott nyelven, amely hiába a Visual C, egyáltalán nem olyan egyszerû. Röviden arról van szó, hogy írni kell egy Windows programot, amelynek annyi a feladata, hogy az OpenGL használatához szükséges minimum követelményeket beállítsa, azaz nyisson egy ablakot, amelybe majd rajzolni lehet. A GDI-nek szüksége van egy Device Context (DC) kontextusra, az OpenGL-nek egy Rendering Context (RC) kontextusra. Az alapvetõ lépések tehát:
 

  •      Az ablak aktuális pixel formátumának beállítása
  •      Az RC létrehozása
  •      A létrehozott RC aktiválása, azaz a DC összekötése az RC-vel
  • A részletes leírásra nem térek ki, hiszen ez maga több oldalt tenne ki; akit érdekel, írjon egy e-mailt, és akkor megadom a teljes leírást. A részletezés helyett egy olyan OpenGL kibõvítésre szeretnék kitérni, amely tartalmazza az ablakozási technikákat is, így elõsegíti ablakozó rendszertõl független OpenGL programok írását. Ez  a GLUT.
        Ahhoz, hogy egy GLUT programot le tudjunk fordítani Visual C fordítóval, néhány dolgot be kell állítani. Elõszor is be kell másolni a glut.h header file-t a Vc98\Include\Gl könyvtárba (az OpenGL header file-okat már tartalmazza a VC). Majd ugyanígy be kell másolni a glut.lib, glut32.lib file-okat a Vc98\Lib könyvtárba, a glut.dll, glut32.dll pedig a Windows\System könvtárba ( ha egy GLUT program exe-jét futtatni akarjuk, a Windows\System könyvtárnak tartalmaznia kell a glut32.dll fájlt).  Ezek után egy GLUT program lefordítása:

    1. variáció : Win32 konzol alkalmazás létrehozása

        Konzol alkalmazás

             Egy Win32 konzol alkalmazás egy olyan program, amely egy text módú ablakban fut. Ez nagyon hasonlít arra, mikor egy
        DOS programot futtatunk Windows alatt, azzal a kivétellel, hogy ez egy tiszta 32 bites alkalmazás, és elérhetõ a Win32
        API-n belül. A konzol programok létrehozhatnak GUI ablakokat az output számára, ahová az OpenGl rajzol. Egy ilyen
        alkalmazás létrehozása a következõképpen néz ki:

        1. hozzunk létre egy új projektet. Menjünk a Files menüre, válasszuk ki a New... menüpontot. Válasszuk a Projects
            fület, és azon belül a Win32 Console application-t. Írjuk be a projekt nevét, legyen ez a név: first, majd OK.
        2. a megjelenõ ablakban válasszuk az A simple application pontot.
        3. miután a projekt létrejött, egészítsük ki az stdafx.h header file-t a következõ sorral:
            #include <GL\glut.h>
        4. menjünk a Projects/Settings menüpontra, majd válasszuk ki a Link fület. Az Objects/Library modules alatti sorba írjuk
            be a következõket: opengl32.lib glu32.lib glut32.lib. Ezzel hozzáadtuk a projekthez a linkelendõ könyvtárakat.
        5. a source files/first.cpp file-t kiválasztva a következõ kódnak kell megjelennie:
     
            #include "stdafx.h"

           int main(int argc, char *argv[])
            {
                return 0;
            }

           készen vagyunk, ide kell beírni a kódot, majd  a Build/Build first.exe menüponttal tudjuk a programunkat lefordítani.

    2. variáció: Egyszerû Win32 alkalmazás létrehozása (konzol ablak nélkül)

        Egyszerû Win32 alkalmazás

        Az OpenGl-lel kapcsolatos könyvek az elõzõ pontban leírt fordítási módszert javasolják, én mégis szeretnék megmutatni
        egy másikat, ami annyiban más, hogy nem hoz létre egy külön konzol ablakot.

        1. hozzunk létre egy új projektet. Menjünk a Files menüre, válasszuk ki a New... menüpontot. Válasszuk a Projects
            fület,és azon belül a Win32 application-t. Írjuk be a projekt nevét, legyen ez a név: first,  majd OK.
        2. a megjelenõ ablakban válasszuk az A simple Win32 application pontot.
        3. miután a projekt létrejött, egészítsük ki az stdafx.h header file-t a következõ sorral:
            #include <GL\glut.h>
        4. menjünk a Projects/Settings menüpontra, majd válasszuk ki a Link fület. Az Objects/Library modules alatti sorba írjuk
            be  a következõket: opengl32.lib glu32.lib glut32.lib. Ezzel hozzáadtuk a projekthez a linkelendõ könyvtárakat.
        5. a source files/first.cpp file-t kiválasztva a következõ kódnak kell megjelennie:

            #include "stdafx.h"
     
            int APIENTRY WinMain(HINSTANCE hInstance,
                                                HINSTANCE hPrevInstance,
                                                LPSTR lpCmdLine,
                                                int nCmdShow)
            {
                // TODO: Place code here.
                return 0;
            }
     

    Tulajdonképpen készen is vagyunk. Ezután a WinMain függvény lesz a main függvény, ide kell beírni az ablak jellemzõit beállító parancsokat. Ha ezt megtettük, akkor létrejön egy ablak, amelybe már tudunk rajzolni.

    Ezek voltak a szükséges teendõk, részletesebb leírás a GLUT oldalon található.

    <- elõzõ oldal
    <- fõoldal