Számítógépes grafika: OpenGL + GLUT + fejlesztőkörnyezetek

A VIK Wikiből


GLUT

Az OpenGL Utilty Toolkit egy library, amely megkönnyíti az OpenGL-es programok írását, azzal, hogy elfedi az operációs rendszerek közötti különbségeket. A GLUT segítségével néhány sor írásával létrehozhatunk egy OpenGL megjelenítésére alkalmas ablakot.

Windows-on ezek a funkciók Visual Studio esetén a glut32.dll fájlban , MinGW esetén a libglut-0.dll fájlban vannak megvalósítva. Ez nem része az operációs rendszernek, külön kell letölteni a hozzá tartozó header fájlokkal együtt (részletesen lejjebb). Egy GLUT-os programnak tehát kell megfelelő GLUT DLL, amit célszerű a =C:\WINDOWS\system32\= mappába másolni, vagy közvetlenül az exe mellé.

Ultimate C&A fejlesztőcsomag

  • A legkönnyebb, legkisebb, leggyorsabb megoldás a grafika házi feladatok forgatására by Csöndes Laci & keeroy
  • MinGW/g++ alapú megoldás, amellyel a saját kedvenc editorodat használhatod. Semmi fölösleges sallang!
  • Az összeállítása nagyon egyszerű, de azért olvasd el a readme.txt-t!
  • Update: cp.bat kiegészítés a rejtélyes gordiusos hibák orvoslására. Használatához olvasd el a readme-t.

Letöltés:

Fájl:Grafika IDE Ultimate C&A fejlesztőcsomag MinGW g++ (ca.zip).zip

Kulcsrakész fejlesztőcsomag

Telepített, beállított mingw/msys környezet. gcc, glut és ráadásnak gdb. Nagyon hasonlatos a fenti C&A csomaghoz, de míg az a netről húzza a dolgokat mikor telepíted, ezt csak ki kell csomagolni.

README-t ne felejtsd elolvasni!

Letöltés:

http://dl.dropbox.com/u/841166/bme/grafika.zip (63MB)

MinGW Studio (Windows)

  • letöltöd a fájlt, kicsomagolod egy stabil helyre (mostantól úgy veszem a C:\-be raktad)
  • megnyitod a C:\grafika_pack\mingwstudio\MinGWStudio.exe programot
  • Edit -> Options -> Compiler: ide bemásolod hogy C:\grafika_pack\gcc441\
  • File -> New -> Projects -> Win32 Console Application: adsz neki nevet és egy elérési útvonalat (pl. C:\Users\kovacsjozsef\Documents\MinGWStudio Projects\)
  • File -> New -> Files -> C/C++ Source File: adsz neki nevet és kiterjesztést
  • Project -> Settings -> Link -> Extra linking options: -lfreeglut -lopengl32 -lglu32
  • berakod a házi template-et a forrásfájl-ba (hogy kipróbáld működik-e)
  • Build -> Build: ha mindent jól csináltál, lefut a fordítás és nincs error
  • másold (CTRL-C) bele a C:\grafika_pack\gcc441\bin\freeglut.dll fájlt a "projekted-neve"\Debug\ mappába
  • Build -> Execute: a program fut

Ha minden működik, ezt látod:

(legközelebb már csak a Build -> "Build and Execute" menüpontra kell kattintanod és a program fordul és elindul)

Hogy miért gondolom ezt jobbnak a többi windows-os megoldásnál?

  • + Egyszerűbb, de ugyanolyan hatékony, mint egy 500+ megás IDE. (mivel csak opengl-t használunk)
  • + A csomag mérete 12mb.
  • + A házi beadó oldal gcc-ben fordít, előny, hogy ez a megoldás is gcc-t használ.
  • + Hogy tényleg semmi váratlan ne érjen, a gcc 4.4.1-et használja ez is, hogy tényleg akkor kapj error-t, ha a házibeadó oldalon is error-t kapnál. (és ugyanazokat a bugokat is)
  • + Könnyű konfigurálni, nem csinál semmi magic-et a háttérben, kvázi egy grafikus wrapper a gcc köré
  • - Nagyon minimalista a program kinézete

LETÖLTÉS (grafika_pack.7z)

NetBeans (Windows)

Alapvetően ez a német cikk volt a kiindulópontom: http://techchan.blog.de/2012/03/18/einrichten-opengl-netbeans-7-1-1-teil-0-start-13209096/.
Ez azonban tartalmaz egy-két felesleges lépést, vagy épp apróbb hibát, így ezeket korrigálva készítettem el a step-by-step leírást.
Remélem, hasznát veszitek, sok sikert! -- Haraszin Péter (vita) 2014. február 18., 16:01 (UTC)

  1. MinGW-t telepíteni szóközt NEM tartalmazó könyvtárba
    1. a példában ez C:\MinGW lesz
    2. a telepítés után az Installation Managerben a következőket kell bekattintani:
      1. mingw32-base
      2. msys-bash
      3. msys-make
    3. ezután Installation menü > Apply changes, ezzel telepíti a gcc-t, g++-t, gdb-t stb. (A MinGW amúgy is hasznos. :) )
    4. Screenshotok:
      1. http://data7.blog.de/media/557/6253557_12411cd7df_l.jpeg
      2. http://data7.blog.de/media/558/6253558_4e31936ead_l.jpeg
  2. Aztán kelleni fog a freeglut library, ez innen letölthető: http://www.transmissionzero.co.uk/computing/using-glut-with-mingw/
    1. itt lásd a "You can download my freeglut MinGW package" szöveg alatt található linket:
      http://files.transmissionzero.co.uk/software/development/GLUT/freeglut-MinGW.zip
    2. ennek tartalmát bontsd ki mondjuk a MinGW könyvtárába, a freeglut nevű alkönyvtárba.
      így az elérési út pl. C:\MinGW\freeglut lesz.
      Mindez csupán az egyszerűség kedvéért történik, egyébként lehetne máshová is tenni, de akkor erre oda kell figyelni, hogy az elérési útvonalak helyesek legyenek. A példában a C:\MinGW\freeglut elérési utat fogjuk használni.
  3. A következő elérési utakat tedd be a környezeti változók közé, a PATH-ba:
    1. C:\MinGW\bin
    2. C:\MinGW\msys\1.0\bin
    3. C:\MinGW\freeglut\bin (ez tartalmazza a freeglut.dll fájlt)
      Itt megjegyezném, hogy sok helyen javasolják a freeglut.dll fájl rendszerkönyvtárakba pakolását, mint pl. 32 bites rendszeren C:\Windows\System32\, vagy 64 bites rendszeren C:\Windows\SysWOW64\ könyvtár, meg akár a freeglut.dll kerülhetne az alkalmazás könyvtárába is, de én egyiket sem tartom túl jó módszernek, értelmesebbnek tűnik berakni a PATH-ba azt a könyvtárat, amely ezt a fájlt tartalmazza - így több projekt számára is elérhető a dll-fájl, valamint rendszerkönyvtárakba sem dobálunk bele 3rd party dll-fájlokat. Persze ízlések és pofonok különböznek... :) (HP)
    (például .........;C:\MinGW\bin;C:\MinGW\msys\1.0\bin;C:\MinGW\freeglut\bin;......... - szándékosan nem tartalmaz szóközöket a pontosvessző után)
    A környezeti változók hozzáadásának módszere:
    itt látható, hogyan kell, ha valaki még nem csinálta
    1. Win+R, majd control.exe sysdm.cpl,System,3
    2. Environment Variables... gombra klatty
    3. Path-hoz legörgetés (), aztán a fentebbi könyvtárak hozzáadása pontosvesszővel elválasztva
  4. Telepítsd a NetBeans-t: https://netbeans.org/downloads/index.html
    nyilván a C/C++ plugint tartalmazót töltsd le és telepítsd (a plugineket amúgy utólag is lehet telepíteni, ha másikat raktál fel).
  5. utána a NetBeans-en belül: Tools > Options > C/C++ > Build Tools fül, így kellene kinéznie:
  6. Ezután hozd létre a C++ projektedet NetBeans-ben, majd a projektre jobb klikk - Properties > Build > C++ Compiler
    1. itt az "Include Directories"-nál megadjuk: C:/MinGW/freeglut/include
    2. így néz ki:
  7. ezután ugyanitt Build > Linker opciónál:
    1. Additional Options: -L"C:/MinGW/freeglut/lib"
    2. Libraries opción belül adjuk hozzá ezeket:
      1. -lfreeglut
      2. -lopengl32
      3. -lglu32
        screenshot:
        ha ezek valamelyike nincs hozzáadva, akkor ehhez hasonló hibaüzeneteket kaphatsz: "undefined reference to `gluPerspective@32'", "undefined reference to `gluLookAt@72' ", stb.
      screenshot:
  8. Készen vagyunk. Ha mindent jól csináltunk, akkor a kódunknak fordulnia kell. Igaz, hogy a lista elég hosszú, de egyszer érdemes végigcsinálni: utána egyszerűbb lesz, mint amilyennek a leírás alapján tűnik.

Qt Creator (Windows)

(alfa verzió, mert nincs nálam a saját gépem, ergo emlékezetből dolgozok) Marha egyszerű, a lépések:

  • letölteni a GLUT-ot
  • telepíteni a Qt SDK-t. Telepítéskor elég, ha a Desktop/MinGW-re koncentrálsz, a grafika házihoz csak ez kell.
  • bemásolni a header fájlokat a Qt Include\GL könyvtárba, ami ilyesmi helyen lehet pl.: "C:\QtSDK\mingw\include\GL"
  • a lib fájlokat is elhelyezni hasonló módon, csak itt a "mingw\lib" könyvtár lesz a célpont
  • a dll fájlt bepakolni a Windows\system32, vagy 64 bites rendszer esetén a SYSWOW64 könyvtárba
  • Qt Creator megnyit, ezután új cpp projektet kell létrehozni
  • A projekt beállításainál (bal oldalon a .pro fájl) nyugodtan ki lehet törölni minden Qt-re vonatkozót, és helyettük a “QT += opengl” és “LIBS += libglut32” bejegyzéseket kell elhelyezni
  • main.cpp fájl tartalmát le lehet cserélni a grafika házi keretre

Innentől pedig mehet minden a megszokott mederben

Visual Studio (Windows)

GLUT letöltés (minden verzióhoz)

Innen https://code.google.com/p/rawvideoplayer/downloads/detail?name=glut-3.7.6-bin.zip&can=2, ez kell glut-3.7.6-bin.zip (117 KB).

Visual Studio .NET 2003

Telepítés

Másoljuk be a következő fájlokat (feltételezve, hogy a Visual Studio a =C:\Program Files\Microsoft Visual Studio .NET 2003\= könyvtárba lett telepítve):

  • glut.h a C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\gl\ könyvtárba
  • glut.lib a C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib könyvtárba

Telepítés más helyre

  • Hozzunk létre egy tetszőleges könyvtárat, pl. C:\GLUT
  • Ide másoljuk a glut.lib fájlt
  • Ebbe hozzunk létre egy gl nevű könyvtárat, és ebbe másoljuk be a glut.h fájlt.
  • Visual Studio-ban Tools | Options... || Projects VC++ Directories -ban adjuk hozzá a GLUT könyvtárát az Include Files és Library Files -ok közé.

Hello OpenGL program

  • File | New Project
  • Visual C++ Projects | Win32 Win32 Console Project
  • Application Settings-ben Empty Project pipa
  • Solution Explorer -ben jobb klikk a project-re, Add | Existing Item...
    File:glTest.cpp
  • Build | Build Solution, Debug Start Debugging

Visual Studio 2005

Telepítés

Másoljuk be a következő fájlokat (feltételezve, hogy a Visual Studio a C:\Program Files\Microsoft Visual Studio 8\ könyvtárba lett telepítve):

  • glut.h a C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include\gl\ könyvtárba
  • glut.lib a C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib\ könyvtárba

Telepítés más helyre

  • Hozzunk létre egy tetszőleges könyvtárat, pl. C:\GLUT
  • Ide másoljuk a glut.lib fájlt
  • Ebbe hozzunk létre egy gl nevű könyvtárat, és ebbe másoljuk be a glut.h fájlt.
  • Visual Studio-ban: Tools | Options... || Projects and Sollutions VC++ Directories -ban adjuk hozzá a GLUT könyvtárát az Include Files és Library Files -ok közé.

Hello OpenGL program

  • File | New Project...
  • Visual C++ | Win32 Win32 Console Application
  • Win 32 Application Wizard -ban Next, Empty Project bepipál
  • Solution Explorer -ben jobb klikk a project-re, vagy a Source Files-ra, Add | Existing Item...
    File:glTest.cpp
  • F5

Visual Studio 2008

Telepítés

  • glut.h a C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl könyvtárba
  • glut.lib a C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib könyvtárba

Látványos segítség Windows 7 alá

Visual Studio Expressek

Egyetlen apróságban térnek el a nem express változatoktól, hogy külön kell letölteni, és telepíteni hozzájuk a Platform SDK-t: http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx. Ezután értelemszerűen a Platform SDK könyvtáraiba kell másolni a glut.h -t, és a glut.lib -et. Bővebben lásd a nem express változatoknál.

Visual Studio 2010 Beta 1 (Windows 7-en)

  • glut.h a C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl könyvtárba
  • glut32.lib a C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib könyvtárba
  • glut32.dll a C:\Windows könyvtárba
  • A C:\Windows\Microsoft.NET\Framework\v4.0.20506\133 könyvtárról csinálj egy másolatot ugyanide 1038 néven
  • Van egy hiba a VS2010 Beta 1-ben, miszerint Unicode karakterkészlettel dolgozik, s emiatt a program belépési pontja nem a main függvény.

Visual Studio 2010 Beta 2 (Windows 7-en)

  • glut.h a C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl könyvtárba
  • glut32.lib a C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib könyvtárba
  • glut32.dll a C:\Windows\System32 könyvtárba

Visual Studio 2010

  • Ugyanúgy kell eljárni, ahogyan a Beta 2-nél.

Visual Studio 2012 (64bit)

  • glut.h a C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\gl könyvtárba (a gl könyvtárat Neked kell létrehozni!)
  • glut32.lib a C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib könyvtárba
  • glut32.dll a C:\Windows\SysWOW64 könyvtárba

Amennyiben a telepítés helye nem a default, akkor a .h és .lib fájlokat az általad megadott *\Microsoft Visual Studio 11.0\VC\ könyvtárba kell tenned!

Visual Studio 2015

  • File/New/Project.../Win32 Console Application
  • Varázslót végigpötyögöd. Az utolsó ablakban az Application type maradjon Console application, Additional options-nál pipát mindenhonnan ki, kivéve az Empty project opciót.
  • Solution explorer, jobb klikk a References-en, Manage NuGet packages...
  • Ezt szépen megkeresed, felcsattintod: http://www.nuget.org/packages/nupengl.core/
  • Solution explorer (logikusan) Sources mappájához hozzáadod a kiadott házi sablont, majd sikeresen fordítod a projektet. :)

Működhet korábbi VS verziókkal is, amik tudnak NuGet-et, nem próbáltam.

Dev-C++ (Windows)

Telepítés

  • Tools | Check For Updates/Packages...
  • _Select devpack server_: devpaks.org
  • Check For Updates
  • Valahol lesz egy =glut= package. Mellette pipa. Ha letöltötte Close.

Hello OpenGL program

  • File | New Project...
  • MultiMedia fülön glut
  • Execute | Compile, Execute Run

Xcode (Mac OS X)

Telepítés

Hello OpenGL program

  • Az include-oknak így kell kinézniük:
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#include <GLUT/glut.h>
  • Hozzá kell adni a =/System/Library/Frameworks/GLUT.framework= -öt és a =/System/Library/Frameworks/OpenGL.framework= -öt a projecthez. (Projecten jobb gomb -> Add -> Existing Frameworks -> ott megkeresed ezeket.)
  • Ezek után elvileg minden gond nélkül fordul.

Linux + tetszőleges szövegszerkesztő

  • Első körben telepíteni kell a következő csomagokat:
    • libglu1-mesa-dev
    • freeglut3-dev
    • mesa-common-dev
    • build-essential
      • eg: debian alapú disztrókon: sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev build-essential
  • Tetszőleges szövegszerkesztővel szerkesztjük a kódot
    • eg: vim, nano, pico, gedit, leafpad, stb.
  • Fordítás: g++ -Wall grafh.cpp -lGL -lGLU -lglut -lGLEW -o grafx, ahol:
    • -Wall: összes warning megjelenítése (pl: a nem használt változókról)
    • -o grafx: kimenet neve
    • -lglut -lGL -lGLU -lGLEW: glut és GL libek linkelése
    • grafh.cpp: ki lehet találni :)
  • Futtatás: duplakatt a létrejövő binárisra. Parancssorban: ./grafx

Debian/Ubuntu + makefile

sudo apt-get install g++ freeglut3-dev

Makefile

nev=elso_hazi

LDFLAGS += -lglut -lGLU -lGL
#LDFLAGS += -m32 # 32 bites bináris
#CXXFLAGS += -m32 # 32 bites bináris

CXXFLAGS += -pedantic -Wall -Wextra
#CXXFLAGS += -DDEBUG -g # debug opciók
CXXFLAGS += -g0 -O3 # release opciók

OBJS = $(nev).o  # linkelendők

$(nev): $(OBJS)
	$(CXX) $(LDFLAGS) $(OBJS) -o $@

clean:
	$(RM) *.o $(nev)

-- maat - 2011.03.27.

Forrás