Computergrafik und OpenGL -  Dieter Orlamünder,  Wilfried Mascolus

Computergrafik und OpenGL (eBook)

eBook Download: PDF
2004 | 1. Auflage
319 Seiten
Carl Hanser Fachbuchverlag
978-3-446-40072-6 (ISBN)
Systemvoraussetzungen
24,90 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
Das Lehrbuch stellt die theoretischen Grundlagen zu den wichtigsten Themenbereichen der Computergrafik, wie Rastergrafik, Modellierung, Transformation, Projektion, Clipping, Sichtbarkeit, Farbe und Beleuchtung sowie Texturen vor.

Anschließend wird die Theorie jeweils mit der unter Windows verfügbaren Grafik-Bibliothek OpenGL in Beispielen, Übungen und zugeordneten Projekten praktisch umgesetzt.

Dafür bieten die Autoren unter der Software-Entwicklungsumgebung Delphi einen Prototyp an. Die Beispiele, Übungen und Projekte sind so allgemein angelegt, dass sie an spezielle Problemstellungen angepasst werden können.

Die zu diesem Buch entwickelten Beispielprojekte und Lösungen zu den Übungsaufgaben sind über eine Website verfügbar und bilden so die Basis für individuelle Grafikentwicklungen. Das Buch ist auch für Einsteiger geeignet und baut auf den Vorkenntnissen in Mathematik und Informatik der 10. Klasse auf.

Die Autoren

Prof. em. Dr. habil. Orlamünder lehrte Computergrafik und Informatik an der TU Dresden.

Dr. Mascolus ist wissenschaftlicher Mitarbeiter der TU Dresden, betreut Übungen und Praktika zur Computergrafik und hält eigene Vorlesungen. 

Vorwort 6
Inhaltsverzeichnis 8
1 Einführung 12
2 Grafische Bibliothek OpenGL 14
2.1 Konzepte und Entwurfsziele 14
2.2 Modell und Architektur 16
2.3 Konventionen, Konstanten, Typen, Routinen 19
2.4 OpenGL und Windows 20
2.5 Spezielle Inhalte der Unit GLToolsDelphi 32
2.6 Erfragefunktionen 34
2.7 Übungen 36
3 Rastergrafik-Algorithmen 37
3.1 Rastern von Punkten, Linien, Kurven und Polygonen 37
3.1.1 Rastern von Punkten 38
3.1.2 Rastern von Linien und Kurven 39
3.1.3 Rastern von Polygonen 44
3.1.4 OpenGL-Routinen 50
3.2 Clipping 52
3.2.1 Clippen von Linien an Rechtecken nach Cohen-Sutherland 53
3.2.2 Clippen von Linien an Polygonen nach Liang-Barsky 55
3.2.3 Clippen von Polygonen nach Sutherland-Hodgman 57
3.2.4 Clippen an beliebigen Clipping-Bereichen 58
3.2.5 Clippen an einem Sichtvolumen 62
3.2.6 OpenGL-Routinen 62
3.3 Farbmodelle, Halbtonverfahren 64
3.3.1 Grundlagen 64
3.3.2 CIE-Standard 68
3.3.3 Farbmodelle 72
3.3.4 Farbdarstellung, Farboperationen 74
3.3.5 Halbtonverfahren 78
3.3.6 OpenGL-Routinen 78
3.4 Antialiasing 79
3.4.1 Vorbemerkungen 79
3.4.2 Antialiasing mit modifiziertem Grundalgorithmus 80
3.4.3 Filtermethode 81
3.4.4 Supersampling-Methode 82
3.4.5 OpenGL-Routinen 84
3.5 Übungen 86
4 Modellierung 88
4.1 Vorbemerkung 88
4.2 Kurven 91
4.2.1 Bézier-Kurven 97
4.2.2 B-Spline-Kurven 102
4.2.3 NURBS-Kurven 108
4.2.4 Kubische Splines und allgemeine Kurven 112
4.2.5 OpenGL-Routinen 118
4.3 Flächen 122
4.3.1 Bézier-Flächen 123
4.3.2 B-Spline-Flächen 127
4.3.3 NURBS-Flächen 128
4.3.4 Allgemeine Flächen 129
4.3.5 OpenGL-Routinen 142
4.4 Körper 146
4.4.1 Drahtmodell 147
4.4.2 Oberflächenmodell, Boundary Representation 147
4.4.3 Volumenmodell 158
4.4.4 OpenGL-Routinen 162
4.5 Spezielle Modelle 164
4.5.1 Partikelsysteme 164
4.5.2 Fraktale Systeme 168
4.5.3 Soft Objects, Blobby Models 176
4.6 Display-Listen, Vertex-Arrays und Clip Planes 177
4.6.1 Display-Listen 177
4.6.2 Vertex-Arrays 180
4.6.3 Clip Planes 183
4.6.4 OpenGL-Routinen 185
4.7 Übungen 188
5 Transformationen und Projektionen 189
5.1 Einführung 189
5.2 Modelltransformation 190
5.3 Ansichtstransformation 199
5.4 Perspektivische Transformation 203
5.5 Orthogonale Transformation 207
5.6 Clippen am kanonischen Sichtvolumen 209
5.6.1 Clippen von Punkten 210
5.6.3 Clippen von konvexen Polygonen 214
5.7 Perspektivische Division 215
5.8 Projektionen 215
5.8.1 Perspektivprojektion 216
5.8.2 Parallelprojektion 217
5.9 Viewporttransformation 218
5.10 Hierarchische Transformationen 219
5.11 Nicht lineare Transformation 222
5.12 OpenGL-Routinen 226
5.13 Übungen 228
6 Sichtbarkeit 230
6.1 Vorbemerkungen, Klassifizierung 230
6.2 z-Buffer-Algorithmus 232
6.3 Historische Sichtbarkeitsverfahren (Kurzüberblick) 234
6.4 Culling 236
6.5 EXACT-Algorithmus 237
6.6 OpenGL-Routinen 241
6.7 Übungen 243
7 Beleuchtung und Schattierung 244
7.1 Einführung 244
7.2 Beleuchtungsmodelle 244
7.2.1 Lichtquellenmodelle 244
7.2.2 Materialeigenschaften 245
7.2.3 Elementare Beleuchtungsmodelle 246
7.2.4 Lokale Beleuchtungsmodelle 250
7.2.5 Globale Beleuchtungsmodelle 253
7.3 Schattierungsmodelle 253
7.3.1 Vorbemerkungen 253
7.3.2 Inkrementelle Berechnung 254
7.3.3 Ray Tracing (Überblick) 258
7.3.4 Radiosity (Überblick) 260
7.4 OpenGL-Routinen 264
7.5 Übungen 267
8 Texturen 268
8.1 Einführung 268
8.2 Prozedurale und diskrete 2D-Texturen 268
8.3 Mapping-Verfahren 271
8.4 Antialiasing bei Texturen 281
8.5 Texturen und Beleuchtungsrechnung 283
8.6 Simulation mit Texturen 284
8.7 OpenGL-Routinen 285
8.8 Übungen 290
9 Transparenz 291
9.1 Transparenzmodelle 291
9.2 OpenGL-Routinen 296
9.3 Übungen 297
10 Interaktion 298
10.1 Einführung 298
10.2 Selektion und Rückkopplung 298
10.3 OpenGL-Routinen 307
10.4 Übungen 310
Literatur 311
Sachwortverzeichnis 314

2 Grafische Bibliothek OpenGL (S. 12-13)

2.1 Konzepte und Entwurfsziele

OpenGL (Open Graphics Library) ist eine Softwareschnittstelle (Interface) zu grafikfähiger Hardware. Die Entwicklung von OpenGL wird durch ein Architecture Review Board (ARB) gesteuert und berwacht. Diesem Gremium gehüren die bedeutenden Hard- und Softwarehersteller Silicon Graphics, IBM, Hewlett Packard, SUN und Microsoft sowie weitere an. Standardliteratur zu OpenGL sind [KemFra00] und [WoNeDa00]. Zweck von OpenGL ist die Unterstützung der Darstellung von zwei- und dreidimensionalen grafischen Objekten mittels eines oder mehrerer Bildspeicher und anwendungsspezifisch weiterer spezieller Speicher.

Die grafischen Objekte werden entweder durch Raumpunkte (Vertices) beschrieben oder sie bestehen aus digitalisierten Bildern (Images, Bitmaps, Pixelmaps) in Form rechteckiger Pixelfelder. Das Interface enthält zu diesem Zweck einen umfangreichen Satz Prozeduren, Funktionen und Statusinformationen. Neben der Standardbibliothek OpenGL mit den wgl-Routinen gibt es die den Funktionsumfang bzw. den Nutzungskomfort erweiternden Bibliotheken GLU (Graphics Library Utility) und GLUT (Graphics Library Utility Tools). OpenGL basiert auf den anschließend näher beschriebenen Konzepten

• Sprachunabhangigkeit,
• Hardwareorientierung,
• einbettendes Windows-System,
• Client-Server-Architektur und Netzwerkfähigkeit,
• Zustandsautomat.

Sprachunabhängigkeit heißt, OpenGL definiert seine grafische Funktionalität unabhängig von einer existierenden Programmiersprache. Das erfordert aber andererseits, dass für jede reale Sprache eine spezielle Einbindung erfolgen muss. So gibt es beispielsweise für Object Pascal oder Visual C++ zu diesem Zweck die speziellen Bibliotheken opengl32.dll und opengl32.lib. Hardwareorientierung ist im Wesentlichen einerseits dadurch charakterisiert, dass OpenGL hohe Anforderung bezüglich verschiedener Buffer (Speicherblöcke) stellt.

Im Grenzfall sind das bis zu vier Frame Buffer (Bildspeicher) für die Bilddarstellung, der Depth Buffer (Tiefenspeicher) für Sichtbarkeitsentscheidungen, der Stencil Buffer (Maskenspeicher) für die Maskierung von Speicherbereichen, der Accumulation Buffer (Akkumulationsspeicher)", 4> für den akkumulativen Bildaufbau und zusätzlicher Auxiliary Buffer (Hilfsspeicher) für Spezialaufgaben. Als Mindestanforderung mssen für jede OpenGL-Implementierung ein Bildspeicher sowie der Depth, Stencil und Accumulation Buffer im Echtfarbmodus vorhanden sein. Ein Großteil dieser Anforderungen wird heute durch Grafikkarten unterstützt bzw. übernommen. Zur Hardwareorientierung zählen andererseits auch die vielen so genannten Fragmentoperationen. Fragmente sind Pixeldaten, bestehend aus deren Adresse, Farbe, Tiefe und den zugeordneten Texturkoordinaten.

Diese durchlaufen im Modell des OpenGL-Automaten verschiedene Stationen, an denen statusgesteuert bestimmte einfache Operationen durchgeführt werden. Diese Abfolge von Tests und Berechnungen kann gut und effizient in Hardware umgesetzt werden. Einbettendes Windows-System ist das Synonym dafür, dass im Gegensatz zu anderen grafischen Schnittstellen für OpenGL der Ansatz verfolgt wird, unabhängig vom Betriebssystem bzw. einer umgebenden grafischen Benutzeroberfläche zu bleiben. Dies führt dazu, dass für jedes umgebende System zumindest eine Minimalanpassung in Form einer gesonderten Bibliothek notwendig ist. Beispielsweise wird für die Benutzung unter Windows die Bibliothek WGL (Windows Graphics Library) benötigt, die jedoch inzwischen integraler Bestandteil von OpenGL ist.

Durch diese Entscheidung gewinnt OpenGL an Portabilität. Allerdings muss ein solches umgebendes System existieren, um bestimmte Aufgaben, wie beispielsweise Eingaben mit der Maus oder Tastatur, zu bernehmen. Das Fenstersystem von Windows verbindet seinen Gerätekontext (Device Context, DC) mit dem für OpenGL erforderlichen so genannten Darstellungs- oder Renderkontext (Rendering Context, RC).

Das hat folgende Konsequenzen:

• Das Fenstersystem erzeugt die korrekte Verbindung seines Gerätekontexts DC mit dem Renderkontext RC von OpenGL (Server) und seiner Anwendung (Client).

• Das Fenstersystem stellt die benötigten Buffer, also mindestens einen Bildspeicher, den Depth Buffer, den Stencil Buffer und den Accumulation Buffer, bereit und organisiert die Darstellung des Inhaltes der Bildspeicher auf dem Bildschirm.

• Das Fenstersystem bernimmt die Verarbeitung von Eingaben, da OpenGL dafr keine Möglichkeit besitzt.

Client-Server-Architektur und Netzwerkfähigkeit charakterisiert ein Konzept, welches darauf basiert, dass die Anwendung, der Kunde (Client), seine Befehle an OpenGL, den Bediener (Server), sendet, der diese Befehle interpretiert und ausführt. Dabei müssen Client und Server nicht auf einem Rechner arbeiten, sondern können ber ein Netzwerk miteinander kommunizieren. Die Verbindung zwischen der Anwendung und OpenGL wird dabei durch das Fenstersystem organisiert.

Außerdem kann ein OpenGL-Server durchaus mehrere Kunden bedienen. Voraussetzung für die Funktionsfähigkeit dieses Konzeptes ist aber auch, dass Befehle exakt in der Reihenfolge ihres Aufrufes abgearbeitet werden, selbst wenn es Verzögerungen in deren Ausführung geben kann. Das bedeutet insbesondere, dass Statusabfragen konsistent den tatsächlichen Status von OpenGL nach Ausführung aller zeitlich vorher liegenden Befehle zurückgeben und dass grafische Primitive vollständig dargestellt werden, bevor weitere Aufrufe ausgeführt werden. Ein Zustandsautomat ist ein Modell der Informationsverarbeitung, das auf einem internen Zustand des Systems basiert.

Er interpretiert Eingaben, verändert dann den internen Zustand entsprechend und erzeugt Ausgaben. Auf OpenGL bezogen bedeutet das, Eingaben werden abhängig vom aktuellen Zustand in den Bildspeicher geschrieben und damit ausgegeben. Der interne Zustand des OpenGL-Automaten wird auch als Status bezeichnet und bestimmt den Modus der Darstellung.

Er kann durch weitere Befehle ohne direkte Auswirkung auf die Ausgabe verändert werden. Der OpenGL-Zustand besteht aus einer Vielzahl von Variablen in speziellen Funktionsgruppen. Er enthält unter anderem implementationsabhängige Größen, wie die Tiefe des Bildspeichers in Bit, aktuelle Attributwerte, wie die voreingestellte Farbe, sowie Angaben zum Darstellungsmodus, die beispielsweise Transformationen, Beleuchtung oder das Antialiasing steuern.

Erscheint lt. Verlag 1.1.2004
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik Grafik / Design
Wirtschaft
ISBN-10 3-446-40072-9 / 3446400729
ISBN-13 978-3-446-40072-6 / 9783446400726
Haben Sie eine Frage zum Produkt?
PDFPDF (Wasserzeichen)
Größe: 4,7 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schränkt geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Schritt für Schritt zu Vektorkunst, Illustration und Screendesign

von Anke Goldbach

eBook Download (2023)
Rheinwerk Design (Verlag)
39,90
Das umfassende Handbuch

von Michael Moltenbrey

eBook Download (2024)
Rheinwerk Fotografie (Verlag)
39,90
Das umfassende Handbuch

von Christian Denzler

eBook Download (2023)
Rheinwerk Design (Verlag)
34,90