Pragt.info
Partner site van: www.heinpragt.com
(c) Hein Pragt
logo pragt.info
Zoeken op deze site!
 
 

OpenGL
© 2010 Hein Pragt

opengl logo In de begintijd van de computer werden in grafische applicaties het beeld pixel voor pixel uitgerekend door de CPU en daarna doorgestuurd naar de grafische kaart die ervoor zorg droeg dat een videosignaal naar de monitor gestuurd werd. Dit lost natuurlijk veel rekenkracht en telkens moesten allerlei grafische functies opnieuw geschreven worden. Nu is een eenvoudige lijn niet zo'n probleem maar ingewikkelde 3D transformaties werden al iets moeilijker. OpenGL wat staat voor Open Graphics Library gebruikt een heel andere aanpak voor het genereren van een beeld via een standaard bibliotheek. Naast de CPU kan er ook een grafische processor van de videokaart ingezet worden (de GPU) om het beeld te genereren. In plaats van het beeld punt voor punt aan te leveren, worden kunnen complete objecten, camera posities en licht instellingen aan de GPU geleverd die dit dan afzonderlijk van de CPU kan renderen. De GPU gaat dus zelfstandig het beeld punt voor punt berekenen en dat beeld wordt uiteindelijk naar de monitor gestuurd. Meestal gaat het om het samenwerken van de CPU en de GPU, afhankelijk van de mogelijkheden die beiden hebben.

Toepassingen waar veel gebruikgemaakt wordt van OpenGL zijn simulatoren, CAD systemen, foto en video bewerkingsprogramma's en natuurlijk computerspelletjes waarin soms hele werelden realistisch nagebouwd worden. OpenGL ontstond in 1992 uit het door Silicon Graphics Inc. ontwikkelde IRIS GL en het grote voordeel is dat het niet alleen voor één computersysteem ontwikkeld is maar dat het op vele platformen geïmplementeerd is. Wanneer u dus een spel wilt ontwikkelen dat zowel op Microsoft Windows als linux en de mac moet draaien, kunt u dit met OpenGL oplossen. U moet wel voor elk systeem apart compileren maar de code hoeft niet aangepast te worden. Dit is het enorme voordeel van OpenGL ten opzichte van bijvoorbeeld DirectX van Microsoft.

De OpenGL API is zeer veel gebruikt bij het ontwikkelen van 2D en 3D grafische applicaties en in basis is het de opvolger is van de Silicon Graphics IRIS GL bibliotheek die SGI ontwikkelde voor hun workstations. SGI heeft in OpenGL veel van hun kennis gestoken om een gemakkelijk te gebruiken, eenvoudig te begrijpen, overdraagbare en met netwerk mogelijkheden programmeer interface voor de toekomst te maken. Heel veel hardware en software leveranciers en ontwikkelaars werken mee aan de OpenGL specificatie en het is een gestroomlijnde, supersnelle grafische rendering bibliotheek. Veel grafische acceleratie kaarten en 3D kaarten implementeren die de basis van OpenGL in hun hardware. OpenGL is door zijn ontwerp, platform en besturingssysteem onafhankelijk. Het kan ook omgaan met netwerken dus het is mogelijk om gelaagd te werken en een OpenGL applicatie te splitsen in een server en een client die het eigenlijke renderen van de graphics uit zal voeren.

Op de volgende pagina's probeer ik aan de hand van voorbeelden wat uitleg te geven over OpenGL met programmeer voorbeelden.

Vriendelijke groet, Hein Pragt


Freeglut

Freeglut is een complete open source alternatief voor de OpenGL Utility Toolkit (GLUT) library. GLUT werd oorspronkelijk geschreven door Mark Kilgard om de voorbeeld programma's in de tweede editie van het OpenGL 'RedBook' te ondersteunen. Sindsdien is GLUT veel gebruikt in veel applicaties omdat het simpel, goed beschikbaar en zeer portable (draaiend op meerdere systemen) is.

GLUT en dus ook Freeglut stellen de programmeur in staat om een venster te maken met een OpenGL context voor grafische mogelijkheden maar ook het gebruiken van de muis, toetsenbord en joystick functies. De oorspronkelijke GLUT library leek niet meer onderhouden te worden en de laatste versie 3.7 stamde nog uit 1998 en de licentie was erg beperkend. Freeglut is oorspronkelijk ontwikkeld door Pawel W. Olszta met hulp van Andreas Umbach and Steve Baker. Steve Baker is momenteel de eigenaar en beheerder van Freeglut. Sinds 1999 is de freeglut library een 100% vervanging van het originele GLUT met een paar dingen die vervallen zijn zoals enkele SGI specifieke functies, en zijn een aantal bugs opgelost. Verder zijn er enkel leuke dingen toegevoegd zoals een grotere set voorgedefineerde vormen en objecten die men out of de box kan gebruiken.

De licentie waaronder freeglut verspreid word is de X-Consortium licentie een hele open licentie die geen enkele vorm van auteursrecht en dus absoluut vrij gebruik toestaat ook in closed source producten.

Link: freeglut.sourceforge.net


gl, glu en glut

Wanneer u OpenGL gaat gebruiken zal het u opvallen dat met over het gl, glu en glut heeft, maar wat is nou het verschil? Voor het programmeren met OpenGL zijn er drie belangrijke libraries:

  • GL is de basis van OpenGL en bevat c.a. 120 functies die allemaal beginnen met de prefix "gl" zoals glColor, glVertex, glTranslate en glRotate.
  • GLU (OpenGL Utility Library) is een library die gebouwd is bovenop de basis GL en deze bevat belangrijke hogere grafische functies zoals gluLookAt en gluPerspective. Hierin kunt u functies vinden voor het mappen van scherm en wereld coördinaten, texture mapping en meer uitgebreide camera functies. Al deze functies beginnen met de prefix "glu".
  • GLUT (OpenGL Utilities Toolkit is een aanvullende module die een interface bied naar een OS (besturingsysteem) voor het maken van vensters, het afhandelen van muis en toetsenbord zoals glutCreatewindow en glutMouseFunc. Al deze functies beginnen met de prefix "glut".


OpenGL en Visual Studio Express 2008 (Deel 1)

© 2010 Hein Pragt

Ik gebruik al jaren de Visual Studio C++ versie van Microsoft (vanaf versie 4.x) en ben nu over op de Visual C++ 2008 Express Edition. Hiermee wilde ik wat gaan programmeren met OpenGL op mijn Windows XP machine (Vista moet ook gewoon werken) en met een paar kleine hindernissen heb ik het allemaa draaiend gekregen. Dit is dan ook het eerste deel van mijn online cursus programmeren in C en OpenGl. De eerste stap is het werkend krijgen van een programmeer omgeving en door het volgen van de volgende stappen kunt u dit voor elkaar krijgen.

OpenGL en Visual Studio Express 2008 (Deel 1)


OpenGL en Visual Studio Express 2008 Win32 versie (Deel 2)

© 2010 Hein Pragt

Het is ook mogelijk om gebruik te maken van de Microsoft OpenGL implementatie, deze is wel enigszins windows afhankelijk maar de basis van OpgenGL blijft hetzelfde waardoor u wel grafische programma's kunt ontwikkelen die met een paar kleine aanpassingen ook op een ander platform kunnen draaien. Het is aan uzelf om zo weinig mogelijk Win32 code te gebruiken en de Windows code en de OpenGL code zo goed mogelijk te scheiden van elkaar. Dit programma maakt gebruik van de Microsoft OpenGL methodes en zal dan ook een een Microsoft Windows venster draaien. Kopieer het vorige project van Deel 1 en kopieer deze broncode er in. Bestudeer de broncode en ontdek hoe u met Win32 OpenGL kunt programmeren.

OpenGL en Visual Studio Express 2008 Win32 versie (Deel 2)





Last update: 20 -04-2010
 

Disclaimer.

Hoewel de heer Hein Pragt de informatie beschikbaar op deze pagina met grote zorg samenstelt, sluit de heer Pragt alle aansprakelijkheid uit met betrekking tot de informatie die, in welke vorm dan ook, via deze site wordt aangeboden. Het opnemen van een afbeelding of verwijzing is uitsluitend bedoeld als een mogelijke bron van informatie voor de bezoeker en mag op generlei wijze als instemming, goedkeuring of afkeuring worden uitgelegd, noch kunnen daaraan rechten worden ontleend.
Op de artikelen van de heer Pragt op deze Internet Site rust auteursrecht. Overname van informatie (tekst en afbeeldingen) is uitsluitend toegestaan na voorafgaande schriftelijke toestemming van de rechthebbende. Voor vragen over copyright en het gebruik van de informatie op deze site kunt u contact opnemen met: (email: copyright@heinpragt.com)

Webdedesign: © Hein Pragt
Fotografie: © Hein Pragt
Auteur: © Hein Pragt

Privacy beleid
Wij maken gebruik van externe advertentiebedrijven om advertenties weer te geven wanneer u onze website bezoekt. Deze bedrijven gebruiken mogelijk informatie (niet uw naam, adres, e-mailadres of telefoonnummer) over uw bezoek aan deze of aan andere websites om advertenties weer te geven over goederen en services waarin u wellicht geïnteresseerd bent. Als u hierover meer informatie wenst of als u wilt voorkomen dat deze bedrijven deze informatie gebruiken, klikt u op deze link.