Hein Pragt Heinpragt.com   
© Hein Pragt ( Facebook ,  Google auteur )

 
 
Inleiding 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


Glut en Freeglut

© 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


gl, glu en glut

© 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)


Boeken over OpenGL

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

Wilt u deze site steunen dan kunt u dit doen door VIA deze site iets te bestellen op:
bol.com Partner


Programmeren



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 Internetsite 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)

De groep sites van Hein Pragt bestaat uit: www.heinpragt.com    www.eroses.eu    www.pragt.info    www.zxy.nl/vraagbaak    www.codebank.nl