© 2010 Hein Pragt
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
© 2010 Hein Pragt
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
© 2010 Hein Pragt
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 |
© 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)
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)
OpenGL(R): A Primer is a concise presentation of fundamental OpenGL, providing readers with a succinct introduction to essential OpenGL commands as
well as detailed listings of OpenGL functions and parameters. Angel uses a top-down philosophy to teach computer graphics based on the idea that
students learn modern computer graphics best if they can start programming significant applications as soon as possible. The book makes it easy
for students to find functions and their descriptions, and supplemental examples are included in every chapter to illustrate core concepts. This
primer can be used both as a companion to a book introducing computer graphics principles and as a stand-alone guide and reference to OpenGL for
programmers with a background in computer graphics.
OpenGL(R) SuperBible, Fifth Edition is the definitive programmer's guide, tutorial, and reference for the world's leading 3D API for real-time computer graphics, OpenGL 3.3. The best all-around introduction to OpenGL for developers at all levels of experience, it clearly explains both the API and essential associated programming concepts. Readers will find up-to-date, hands-on guidance on all facets of modern OpenGL development, including transformations, texture mapping, shaders, advanced buffers, geometry management, and much more. Fully revised to reflect ARB's latest official specification (3.3), this edition also contains a new start-to-finish tutorial on OpenGL for the iPhone, iPod touch, and iPad. Coverage includes * A practical introduction to the essentials of real-time 3D graphics * Core OpenGL 3.3 techniques for rendering, transformations, and texturing * Writing your own shaders, with examples to get you started * Cross-platform OpenGL: Windows (including Windows 7), Mac OS X, GNU/Linux, UNIX, and embedded systems * OpenGL programming for iPhone, iPod touch, and iPad: step-by-step guidance and complete example programs * Advanced buffer techniques, including full-definition rendering with floating point buffers and textures * Fragment operations: controlling the end of the graphics pipeline * Advanced shader usage and geometry management * A fully updated API reference, now based on the official ARB (Core) OpenGL 3. 3 manual pages * New bonus materials and sample code on a companion Web site, www.starstonesoftware.com/OpenGL Part of the OpenGL Technical Library--The official knowledge resource for OpenGL developers The OpenGL Technical Library provides tutorial and reference books for OpenGL. The Library enables programmers to gain a practical understanding of OpenGL and shows them how to unlock its full potential. Originally developed by SGI, the Library continues to evolve under the auspices of the OpenGL Architecture Review Board (ARB) Steering Group (now part of the Khronos Group), an industry consortium responsible for guiding the evolution of OpenGL and related technologies.
Are you a beginning programmer just getting started in 3D graphics programming? If you're comfortable programming in C++ and have a basic understanding of 3D math concepts, Beginning OpenGL Game Programming, Second Edition will get you started programming 3D graphics for games using the OpenGL API. Revised to work with the latest version of OpenGL, OpenGL 3.0, this book is perfect for programmers who are new to game development or new to OpenGL. New skills and concepts are taught using step-by-step instructions, with end-of-chapter exercises for testing and reinforcement. From creating a simple OpenGL application, to applying texture mapping, and even displaying 2D fonts, you'll find complete yet concise coverage of all the newest features of OpenGL as they apply to 3D graphics for game development. And by the end of the book, you'll be able to apply your newfound knowledge of OpenGL to create
your very own games.
For junior- to graduate-level courses in computer graphics. Assuming no background in computer graphics, this junior- to graduate-level course presents basic principles for the design, use, and understanding of computer graphics systems and applications. The authors, authorities in their field, offer an integrated approach to two-dimensional and three-dimensional graphics topics. A comprehensive explanation of the popular OpenGL programming package, along with C++ programming examples illustrates applications of the various functions in the OpenGL basic library and the
related GLU and GLUT packages.
Last update: 10-03-2011
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 zijn 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)
Webdesign: © Hein Pragt
Fotografie: © Hein Pragt
Auteur: © Hein Pragt (Veenendaal - Utrecht - Nederland)
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.
|