3D-Grafi k mit OpenGL - mitp.de · PDF fileAußerdem zum Thema bei mitp: Apetri OpenGL Marius Apetri 3D-Grafi k mit OpenGL Das umfassende Praxis-Handbuch Aus dem Inhalt: • Grundlagen

Embed Size (px)

Citation preview

  • Auerdem zum Themabei mitp:

    Apet

    riO

    penG

    LMarius Apetri

    3D-Grafi k mit

    OpenGLDas umfassende Praxis-Handbuch

    Aus dem Inhalt:

    Grundlagen der OpenGL- ProgrammierungEinfhrung in die 3D- Grafi kprogrammierungDas Zusammenwirken von Programmsoftware und Grafi khardwareUmgang mit Matrizen Beleuchtung von GegenstndenPolygon- und Textur- schattierung mit GLSLEinschrnkung des Sicht- bereichesAuswahl von GegenstndenHardwarebeschleunigte BildbearbeitungTexturprojektion Ein- und Ausgabe von TextenGenerierung einer ProgrammkonsoleSemitransparenz Globale und rtlich begrenzte NebelfelderTexturprojektion Multitextureffekte

    Auf der CD:Vollstndige Quelltexte:

    199 Programme in C++, basierend auf GLUT199 Programme in C++ fr Windows4 Programme in Java (JOGL v1.1.1a), die alle wichtigen Themen abdecken

    Der OpenGL-Standard ist eine sprachenunabhngigeProgrammierschnittstelle zur Entwicklung von 2D- und 3D-Computergrafik und eignet sich zur Dar-stellung komplexer Szenen in Echtzeit. OpenGL ist die Grundlage zur Erstellung zahlreicher Software-projekte wie Computerspiele, Animationen fr Film- und Videoprojekte, wissenschaftliche Dar-stellungen oder virtuelle Realitt.Dieses Buch vermittelt die Kenntnisse, die fr die Erstellung einfacher bis komplexer OpenGL-Anwendungen bentigt werden. Alle Themen werden anhand anschaulicher Beispiele erlutert. Der OpenGL-Standard wird aus der Perspektive des Entwicklers vorgestellt, der komplexe virtuel-le Welten generieren mchte, in denen man sich frei bewegen kann.Nach der Vorstellung grundlegender Konzepte von OpenGL wird die Visualisierung von Punkten, Linien,Polygonen und Polyedern erlutert. Daraufhin behandelt der Autor das von OpenGL eingesetzte System zur Verarbeitung von Matrizen einschlie-lich der Vorteile dieses Systems gegenber der in der Mathematik blichen Reihenfolge der Multipli-kation von Matrizen.Weitere Schwerpunkte sind die Geometry Pipeline, Picking, eine ausfhrliche Einfhrung in die Pro-grammierung des Vertex- und Fragmentprozessors mit GLSL, die hardwarebeschleunigte Bearbeitung von Bildern, Semitransparenz sowie Texturpro-jektion und -schattierung. Die Darstellung einer virtuellen Welt aus der Sicht mehrerer, beliebig positionierter und ausgerichteter Kameras wird ebenfalls behandelt.Dies ist ein Lehrbuch mit zahlreichen bungsaufga-ben, das sich besonders gut fr das Alleinstudium eignet. Zusammenhnge werden einem breiten Publikum nachvollziehbar erklrt, und es werden lediglich gute Kenntnisse einer leistungsfhigen Programmiersprache sowie das mathematische Grundwissen der gymnasialen Mittelstufe voraus-gesetzt. Dabei richtet sich der Autor an Leser, die weder ber OpenGL-Kenntnisse noch ber Vor-kenntnisse in der Computergrafik verfgen. Die Beispiele im Buch sind in C++ erstellt.

    ISBN 978-3-8266-5548-7

    ISBN 978-3-8266-1767-6

    ISBN 978-3-8266-5953-9

    (D)

    49

    ,95

    Mathematische Grundlagen und Einfhrung in die 3D-Grafi k-programmierung

    Modellierung dreidimensionaler Umgebungen

    Zahlreiche anschauliche Beispielprogramme und bungsaufgaben

    ISBN 978-3-8266-5512-8ISBN 978-3-8266-5512-8

    Das

    um

    fass

    ende

    Pr

    axis

    -Han

    dbuc

    h3D

    -Gra

    fi k

    mit

    inklusive CD-ROM

    5512_P_OpenGL_U4_RS_Korr2.indd 1 12.07.2010 20:14:31

  • 25

    Teil IGrundlagen der OpenGL-Programmierung

    In diesem Teil:

    Kapitel 1Programmsoftware und Grafikhardware . . . . . . . . . . . . . . 27

    Kapitel 2Darstellung von Punkten . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    Kapitel 3Globale Zustnde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    Kapitel 4Darstellung von Linien. . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    Kapitel 5Der Auswertungsmechanismus von OPENGL . . . . . . . . . . 111

    Der erste Teil des Buches gibt einen ausfhrlichen Einblick in dieHauptmerkmale des OPENGL-Standards, wie beispielsweise dieVerwendung globaler Zustnde, die gepufferte Ausgabe, das Feh-lererkennungssystem oder die verschiedenen OPENGL-Imple-mentierungen.

    Das zweite Hauptthema sieht die Diskussion der Richtlinien vor,die bei der Erstellung von OPENGL-Programmen zu bercksich-tigen sind; in diesem Zusammenhang werden die Benennung vonFunktionen und die Verwendung von OPENGL-Datentypenbeschrieben. Der praktische Einsatz dieser Vorgaben erfolgtanhand zahlreicher Beispielprogramme mit zweidimensionalenAusgaben zur Darstellung von Punkten, Linien und Annherun-gen an Bzierkurven.

    00___OpenGL.book Seite 25 Montag, 12. Juli 2010 8:45 20

    des Titels 3D-Grafik mit OpenGL (ISBN 978-3-8266-5512-8) 2010 by Verlagsgruppe Hthig Jehle Rehm GmbH, Heidelberg Nhere Informationen unter: http://www.it-fachportal.de/5512

    http://www.it-fachportal.de/5512

  • 00___OpenGL.book Seite 26 Montag, 12. Juli 2010 8:45 20

    des Titels 3D-Grafik mit OpenGL (ISBN 978-3-8266-5512-8) 2010 by Verlagsgruppe Hthig Jehle Rehm GmbH, Heidelberg Nhere Informationen unter: http://www.it-fachportal.de/5512

    http://www.it-fachportal.de/5512

  • 27

    Kapitel 1

    Programmsoftware und Grafikhardware

    Die Idee, die uns umgebende dreidimensionale Welt auf einem Computer nachzuahmen,wurde bereits in den sechziger Jahren ausfhrlich diskutiert, als die modernsten Rechnernoch ganze Rume ausfllten und nur wenigen Personen zur Verfgung standen. Algorith-men, mit deren Hilfe knstliche dreidimensionale Umgebungen sich auf eine fotorealistischeWeise generieren lassen, unter anderem Polygonschattierung, Texturprojektion oder dieModellierung von Semitransparenz- und Reflexionsdarstellungen, wurden bereits in dieserfrhen Zeit entwickelt.

    Die geringe Leistungsfhigkeit der verfgbaren Computersysteme erlaubte die breite Anwen-dung dieser spektakulren, jedoch rechenintensiven Grafikeffekte allerdings ber einen lnge-ren Zeitraum nicht. Stattdessen griff man bei der Programmierung zwei- und dreidimensionalerWelten zunchst auf wesentlich einfachere Algorithmen zurck, die im weiteren Verlauf immerkomplexer werden konnten und, in enger Anlehnung an den technischen Fortschritt, bessereAnnherungen an die reale Welt zu generieren vermochten. Die Grundstruktur dieser Pro-gramme blieb jedoch unverndert.

    1.1 Parallele Durchfhrung von BerechnungenDie Darstellung einer knstlichen Umgebung lsst sich im Allgemeinen in zwei klar voneinan-der getrennten Phasen unterteilen. In der ersten Phase werden die Eingaben des Benutzers ent-gegengenommen, bei Bedarf erfolgt die Bewegung bestimmter virtueller Gegenstnde, und dieim aktuellen Bildaufbau sichtbaren Polygone werden ausgewhlt. Die eigentliche Darstellungder ausgewhlten Polygone auf dem Bildschirm erfolgt erst whrend der zweiten Phase; dieseist aufgrund der beschriebenen komplexen Visualisierungsverfahren im Allgemeinen um einVielfaches rechenaufwendiger als die erste.

    Die Berechnungen, die whrend des Darstellungsvorganges virtueller Welten auftraten, wurdenzunchst vollstndig von dem Hauptprozessor durchgefhrt. Mit steigender Leistung der ver-fgbaren CPUs wurden auch die Ausgaben immer realistischer; doch trotz dieser rasanten Ent-wicklung erkannte man bereits sehr frh, dass der Rechenaufwand, den die Echtzeitdarstellungeiner fotorealistischen dreidimensionalen Umgebung erfordert, viel zu gro ist, um in naherZukunft von dem Hauptprozessor allein bewltigt werden zu knnen. Diese Tatsache gilt selbstfr die modernsten Multicore-CPUs mit Geschwindigkeiten von mehreren Gigahertz.

    Arbeitsteilung lautet die Lsung dieses Problems: Whrend der Hauptprozessor weiterhin dieerste Phase der Berechnung des aktuellen Bildaufbaus bernimmt, weist man die aufwendigen,in der zweiten Phase durchzufhrenden Berechnungen einem zustzlichen, prozessorhnlichen

    00___OpenGL.book Seite 27 Montag, 12. Juli 2010 8:45 20

    des Titels 3D-Grafik mit OpenGL (ISBN 978-3-8266-5512-8) 2010 by Verlagsgruppe Hthig Jehle Rehm GmbH, Heidelberg Nhere Informationen unter: http://www.it-fachportal.de/5512

    http://www.it-fachportal.de/5512

  • Kapitel 1Programmsoftware und Grafikhardware

    28

    Baustein zu, dem so genannten Grafikprozessor; im Gegensatz zur CPU, die auf der Haupt-platine des Computers angebracht ist, befindet dieser sich auf der Grafikkarte.

    Die vom Grafikprozessor durchzufhrenden Berechnungen werden so ausgewhlt, dass dieseparallel, das heit zur selben Zeit wie die Berechnungen erfolgen knnen, die nach wie vor inden Aufgabenbereich des Hauptprozessors bertragen werden: Whrend der Grafikprozessordie zweite Phase des aktuellen Bildaufbaus verarbeitet, kann die CPU bereits die in der erstenStufe des jeweils nchsten Frames auftretenden Berechnungen durchfhren. Der entscheidendeGeschwindigkeitsvorteil, der selbst die Visualisierung hochkomplexer Umgebungen ermg-licht, ist auf diese Halbierung des gesamten Rechenaufwandes zurckzufhren.

    1.1.1 Der nicht programmierbare GrafikprozessorWhrend die Aufgabe der CPU darin besteht, eine mglichst groe Anzahl voneinander unter-schiedlicher Aufgaben zu bewltigen, bernimmt der nicht programmierbare Grafikprozessorgrundstzlich nur sehr spezielle Aufgaben: entweder einen Punkt setzen oder eine Linie zeich-nen oder ein Polygon darstellen. Die Erweiterungsmglichkeiten dieser Aufgaben, wie diebenutzerdefinierte Einstellung der Gre des Punktes oder die Projektion einer Textur auf dieOberflche des Polygons sind ebenfalls sehr beschrnkt.

    Abb. 1.1: Schematische Darstellung einer Schaltung, die zwei Bitwerte a und b unter Berck-sichtigung des aus der vorherigen Berechnung stammenden bertrags c zusammenaddiert

    Es ist daher naheliegend, fr jede dieser Aufgaben eine eigene Schaltung zu entwerfen, die auseiner entsprechenden Verkettung von Bausteinen besteht, die die einfachen logischen Operatio-nen UND,