Programmieren mit OpenGL und GLUT
|
|
|
- Adolf Huber
- vor 9 Jahren
- Abrufe
Transkript
1 Programmieren mit OpenGL und GLUT Prof. Dr. Manfred Brill Oktober 2003 Inhaltsverzeichnis 1 OpenGL Bibliotheken und Header-Dateien OpenGL Datentypen GLUT Ein typisches GLUT-Hauptprogramm GLUT initialisieren und ein OpenGL-Fenster erzeugen Callback-Funktionen für die grafische Ausgabe Callback-Funktionen für Peripherie-Geräte Die Event-Loop Literatur 7 1 OpenGL OpenGL als 3D-API wird von einem Architecture Review Board entwickelt, dem unter anderem Silicon Graphics, IBM, Hewlett-Packard, SUN und Microsoft angehören. Die Ursprünge von OpenGL stammen von Silicon Graphics. Dort hieß das API GL, eine Abkürzung für Graphics Library. Ein wesentlicher Unterschied zwischen GL und OpenGL ist, dass OpenGL keinerlei Funktionen enthält, die in irgendeiner Weise mit dem Fenstersystem, sei es X11 oder Microsoft Windows, kommunziert. OpenGL enthält über 200 Funktionen. Wenn Sie vorhaben, häufig mit dem API zu arbeiten sind die bei Addison-Wesley erschienenen Bücher OpenGL Reference Manual ( blue book, [WND00]) und OpenGL Programming Guide ( red book, [KF00]) ein absolutes Muss! Die verschiedenen Fallstudien im Buch [BB03] behandeln die Funktionen in OpenGL für die Definition der Sicht, die vorgesehenen Ausgabe-Primitive oder Texture-Mapping. Dieser Text stellt den prinzipiellen Aufbau eines OpenGL-Programms dar. Zum Teil sind die Vorschläge subjektiv und aus der persönlichen Erfahrung des Autors gewonnen. Sehen Sie also den Inhalt als Vorschlag und entwickeln Sie in Ihrer Arbeit mit OpenGL den für Sie und Ihre Projekte passenden Aufbau. 1.1 Bibliotheken und Header-Dateien OpenGL besteht aus zwei Bibliotheken. Einmal dem Kern des API, der unter UNIX als libgl.so oder libgl.a in /usr/lib zu finden ist. Für Microsoft Windows suchen Sie entsprechend nach opengl32.lib oder opengl32.dll. Daneben gibt es die OpenGL Utility Library oder kurz GLU (für UNIX ist dies libglu.so bzw. libglu.a, für Microsoft Windows glu32.lib bzw.
2 1 OpenGL 2 glu32.dll). Die Deklarationen der in diesen beiden Bibliotheken enthaltenen Funktionen sind in den Dateien Gl.h und Glu.h enthalten. Im UNIX-Betriebssystem finden Sie diese beiden Header-Dateien im Verzeichnis /usr/include/gl; für Microsoft Windows und Microsoft Visual in einem entsprechenden Verzeichnis. Ein Programm, das OpenGL verwendet sind also die beiden include-anweisungen #include <GL/Gl.h> #include <GL/Glu.h> enthalten. Es soll hier nicht der Versuch unternommen werden, die im API enthaltenen Funktionen aufzuzählen. Prinzipiell gilt in OpenGL die Namenskonvention, dass die Funktionen in der Kernbibliothek mit dem Präfix gl versehen sind, beispielsweise glclear(gl_color_buffer_bit); für das Löschen des aktuellen Fensterinhalts. Funktionen aus der Utility Library haben den Präfix glu, beispielsweise glunewquadric(); für das Anlegen einer neuen Quadrik. Die Konstanten, die in den Headerdateien definiert sind werden immer groß geschrieben; und beginnen entsprechend mit GL und GLU. Einzelne Worte werden mit einem Unterstrich getrennt. 1.2 OpenGL Datentypen OpenGL arbeitet intern mit spezifischen Datentypen für ganze Zahlen und Gleitkommenzahlen. Es gibt zwar inzwischen eine IEEE-Norm für Gleitkommaarithmetik, aber eine Variable vom Typ int ist manchmal eine 16-Bit Größe, manchmal eine 32-Bit Größe, je nach Betriebssytem und Compiler. Aus diesem Grund sind in OpenGL eigene Datentypen vorgesehen, die Sie auch verwenden sollten, um sicher zustellen, dass Ihr Programmcode portabel bleibt. Tabelle 1 enthält die einzelnen Datentypen. Eine ganze Reihe von OpenGL-Funktionen, allen voran glvertex zur Übergabe von Eckpunkt- Koordinaten, sehen vor, dass neben dem Stammnamen die Anzahl der übergebenen Argumente, gefolgt vom verwendeten Datentyp der Argumente übergeben werden. Sie werden häufig die Notation glvertex*() in der Literatur finden; damit soll angegeben werden, dass je nach übergebenen Argumenten der richtige Aufruf gebildet werden muss. Tabelle 1 enthält die Suffixe für die in OpenGL vorgesehenen Datentypen. Ist das Argument ein Feld, dann wird dem Suffix noch v beigefügt. OpenGL Datentyp Datentyp Entsprechender C/C++-Typ Suffix GLbyte 8-Bit Integer signed char b GLshort 16-Bit Integer short s GLint, GLsizei 32-Bit Integer int i GLfloat, GLclampf 32-Bit Gleitkommazahl float f GLdouble, GLclampd 64-Bit Gleitkommazahl double d GLboolean, GLubyte 8-Bit Integer ohne Vorzeichen unsigned char ub GLushort 16-Bit Integer ohne Vorzeichen unsigned short us GLenum, GLbitfield, 32-Bit Integer ohne Vorzeichen unsigned int ui Gluint Tabelle 1: OpenGL Datentypen und Suffixes Im folgenden Quelltext sind an Hand der Funktionen glvertex* und glcolor* einige mögliche Aufrufe dargestellt: glvertex2i(100, 50); // Zwei Koordinaten vom Typ GLint. glvertex3f(100.0, 50.0, 10.0); // Drei Koordinaten vom Typ GLfloat. glvertex4s(100, 50, 10, 1); // Punkt in homogenen Koordinaten,
3 2 GLUT 3 // vom Typ GLshort. GLdouble point[3] = {100.0, 50.0, 1.0; glvertex3dv(point); // Drei Koordinaten vom Typ GLfloat, // als Feld übergeben. glcolor3f(1.0, 0.0, 0.0); // Die Farbe auf rot setzen. glcolor4d(1.0, 0.0, 0.0, 1.0); // Die Farbe auf rot setzen, // mit Alpha-Wert 1.0. GLfloat green[3] = {0.0, 1.0, 0.0; glcolor3fv(green); // Die Farbe grün, als Feld übergeben. 2 GLUT Wie bereits im letzten Abschnitt bemerkt enthält OpenGL keine Funktionen, die in irgendeiner Weise mit dem verwendeten Fenstersystem kommunizieren. Es gibt natürlich die Möglichkeit, OpenGL mit dem jeweils verwendeten Oberflächen-System zu verheiraten. Sind sie an der Arbeit mit OpenGL und Microsoft Windows interessiert, dann ist ein Blick in [Fos96] ( white book ) empfohlen. OpenGL und X11 wird in [Kil96b] ( green book ) dargestellt. Auf der Basis der Arbeit für dieses Buch hat Mark Kilgard das GL Utility Toolkit oder kurz GLUT entwickelt. Diese Bibliothek hat das Ziel, eine einheitliche Schnittstelle zum verwendeten Fenstersystem anzubieten. Der Schwerpunkt liegt hier nicht auf der Performanz, sondern auf Portabilität. GLUT steht auf alle relevanten UNIX-Plattformen, insbesondere LINUX, MacOS und Microsoft Windows zur Verfügung. Wie für das OpenGL-API gibt es eine Bibliothek und eine Header-Datei. Diese installieren Sie in das Verzeichnis, in dem auch die beiden OpenGL-Header abgelegt sind. Verwenden Sie den GLUT, dann reicht eine Anweisung #include <GL/Glut.h> Diese Datei stellt sicher, dass die beiden anderen Header-Dateien ebenfalls hinzugefügt werden. Eine Einführung in den GLUT finden Sie im Anhang des red book [WND00] oder in [Kil96b]. Tip: Im WWW finden Sie neben der Bibliothek und den Header-Dateien für den GLUT auch ein PDF-Dokument mit der aktuellen Dokumentation ([Kil96a]); zur Zeit zur Version 3.7. Links zum Download finden Sie auf der Website Wie bei OpenGL wird auch hier eine Namenskonvention eingehalten; Funktionen haben immer den Präfix glu; die Konstanten aus Glut.h werden groß geschrieben und beginnen immer mit GLUT. 2.1 Ein typisches GLUT-Hauptprogramm Ein typisches GLUT-Hauptprogramm in C oder C++ enthält Anweisungen, mit deren Hilfe ein Fenster für die OpenGL-Ausgaben erzeugt und initialisiert werden kann. Bevor diese Funktionen im Einzelnen betrachtet werden hier ein Vorschlag für ein Hauptprogramm: /* * Muster eines Hauptprogramms mit OpenGL und GLUT * */ int main(int argc, char **argv) { /* GLUT initialisieren */
4 2 GLUT 4 glutinit(&argc, argv); /* Ausgabezustand festlegen glutinitdisplaymode( GLUT_DOUBLE GLUT_RGBA); /* Fenstergröße und -position festlegen */ glutinitwindowsize(600,600); glutinitwindowposition(100,100); /* Das Fenster erzeugen und Titeltext definieren */ glutcreatewindow("mein erstes OpenGL-Programm"); /* GLUT den display-callback übergeben */ glutdisplayfunc(display); /* GLUT den Reshape-Callback übergeben */ glutreshapefunc(reshape); /* GLUT den Tastatur-Callback übergeben */ glutkeyboardfunc(keyboard); /* GLUT den Maustasten-Callback übergeben */ glutmousefunc(mouse); /* GLUT den Maus-Callback übergeben */ glutmousemotionfunc(mousemotion); /* GLUT den Idle-Callback übergeben */ glutidlefunc(idle); /* Weitere Initialisierungen durchführen, Hintergrundfarbe des Fensters, Kamera,... */ init(); /* Die GLUT-Eventloop starten */ glutmainloop(); return 0; 2.2 GLUT initialisieren und ein OpenGL-Fenster erzeugen Die erste GLUT-Funktion, die Sie aufrufen ist void glutinit(int argc, char **argv); Welche Kommandozeilen-Parameter Sie übergeben hängt vom verwendeten Fenstersystem ab. Die glutinit übergebenen Parameter sollten mit denen übereinstimmen, die auch main erhalten hat. Anschließend legen wir mit void glutinitdisplaymode(unsigned int mode); fest, wie die Darstellung im später erzeugten Fensters erfolgen soll. Hier gibt es eine ganze Menge von Optionen, beispielsweise ob mit double buffering gearbeitet werden soll, oder ob eine Farbtabelle (GLUT_INDEX) oder mit frei mischbaren RGBA-Farben gearbeitet wird. Wie Sie diese beiden Optionen einstellen sehen Sie im oben dargestellten Muster-Hauptprogramm. Der Default- Zustand ist durch die Maske GLUT_RGBA GLUT_SINGLE definiert. Jetzt können wir festlegen, wie groß das zu erzeugende Fenster werden soll, und wo seine Position ist: void glutinitwindowsize(int width, int height); void glutinitwindowposition(int x, int y); Die Argumente int x, int y legen die linke, obere Ecke des Fensters fest, relativ zum Display. width und height legen die Größe in Pixeln fest. Ein Fenster wird schließlich mit int glutcreatewindow(char *name); erzeugt. Dabei gelten die vorher festgelegten Eigenschaften. Die übergebene Zeichenkette wird als Fenstername verwendet. Allerdings wird das Fenster noch nicht dargestellt, dies geschieht
5 2 GLUT 5 erst, wenn mit Hilfe der Funktion glutmainloop() die Event-Loop geöffnet wird. Der zurückgegebene Integer-Wert ist ein eindeutiger Schlüssel für dieses Fenster und kann im Programm beispielsweise dazu verwendet werden, mehrere Fenster in einer Anwendung zu öffnen. 2.3 Callback-Funktionen für die grafische Ausgabe GLUT bindet Ihr OpenGL-Programm an ein Fenstersystem an. Der gemeinsame Nenner aller Systeme ist, dass ein Event-Handling durchgeführt wird. Das bedeutet, in einer Endlosschleife wartet ein Event-Handler auf ein Ereignis, beispielsweise, ob Sie die Maus bewegen, eine Maus- Taste oder die Tastatur auslösen. Ist für ein aufgetretenes Event ein Callback registriert, dann wird dieser aufgerufen. Dieses Vorgehen entspricht dem Konzept in X11 und dem Xt-Toolkit. Die folgenden Callbacks müssen natürlich nicht alle enthalten sein; wenn Sie keine Tastatur- Kommandos vorsehen, können Sie die entsprechende Registrierung einfach weglassen. Den folgenden Callback aber werden Sie immer aufnehmen, nämlich die Registrierung der Funktion, die für die grafische Ausgabe Ihres Programms zuständig ist: void glutdisplayfunc(void (*func)(void)); Die übergebenen Funktion wird immer dann aufgerufen, wenn der Fensterinhalt neu gezeichnet werden muss. Dies ist der Fall beim ersten Öffnen des Fensters, oder wenn eine Verdeckung durch ein anderes Fenster wegfällt. Sie können auch durch die Funktion void glutpostredisplay(void); eine Neuaufbau des Fensterinhalts durch die mit glutdisplayfunc registrierte Funktion jederzeit erzwingen. Wird das von GLUT erzeugte Fenster verschoben oder in seiner Größe verändert, dann sollten Sie eine Funktion registrieren, die für diesen Fall beispielsweise mit glviewport() das Verhältnis zwischen Höhe und Breite des Fensters berücksichtigt: void glutreshapefunc(void (*func)(int width, int height)); Die Argumente der übergebenen Funktion werden beim Aufruf mit der neuen Breite und Höhe des Fensters in Pixeln belegt. Neben dem Viewport sollten Sie hier auch die Sicht entsprechend anpassen. Wird keine Funktion registriert verwendet GLUT als Default eine Funktion, die einfach glviewport(0, 0, width, height) aufruft. 2.4 Callback-Funktionen für Peripherie-Geräte GLUT kennt natürlich die Tastatur oder eine Maus. Die Maus wird dabei immer als eine Dreitasten-Maus interpretiert. Neben diesen beiden Peripherie-Geräten gibt es inzwischen auch eine ganze Menge anderer Geräte die unterstützt werden, beispielsweise die Space-Mouse. Weitere Einzelheinten können Sie der online verfügbaren GLUT-Dokumentation entnehmen. Eine Funktion, die Tastatur-Eingaben verarbeitet wird mit void glutkeyboardfunc(void (*func)(unsigned int key, int x, int y)); registriert. Der key-parameter enthält das eingegebene ASCII-Zeichen. Die Parameter x,y enthalten die Position des Maus-Zeigers (in Fensterkoordinaten) zum Zeitpunkt der Tastatureingabe. Eine mimimale Callback-Funktion für die Tastatur könnte darin bestehen, mit der Taste q das Programm zu beenden: /* Der Tastatur-Callback in Minimalausstattung */ void keyboard(unsigned char key, int x, int y) { switch (key) { case q : exit(0); break;
6 2 GLUT 6 GLUT bietet die Möglichkeit, den drei Maustasten Menus beizugeben. Dazu gibt es die Funktionen // Menu erzeugen und Callback registrieren int glutcreatemenu(void (*func)(int)); // Menu-Eintrag hinzufügen: void glutaddmenuentry(char *text,int case); */ // Maus-Taste für das Menu festlegen: glutattachmenu(int button); Mit glutcreatemenu wird ein neues Menu erzeugt und eine Funktion registriert, die die Auswahl behandelt. Mit glutaddmenuentry werden dann die Menu-Eintrage definiert; der zweite übergebene Parameter legt den Integer-Wert fest, der bei der Auswahl übergeben wird. Mit glutattachmenu schließlich wird die Maus-Taste ausgewählt, mit der das Menu aktiviert wird. Eine Minimalausstattung für ein solches Menu könnte wieder darin bestehen, mit der rechten Maustaste das Programm beenden zu können: /* Maus-Menu für die rechte Maustaste; Minimalausstattung */ void standard(int id) { switch (id) { case 100: exit(0); break; /* Menu registrieren */ void mousemenu(void) { glutcreatemenu(standard); glutaddmenuentry("quit",100); glutattachmenu(glut_right_button); Neben Menüs wollen Sie sicher auch Events für die Maustasten definieren. Dazu gibt es die Funktion void glutmousefunc(void (*func)(int button, int state, int x, int y)); Die damit registrierte Funktion wird aufgerufen, wenn eine Maustaste betätigt oder losgelassen wird. Der button-parameter hat entweder GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON oder GLUT_RIGHT_BUTTON als Wert. Der state-parameter hat entweder GLUT_UP oder GLUT_DOWN als Wert. Die beiden x,y-parameter enthalten die Mausposition in Fensterkoordinaten zum Zeitpunkt des Events. Mit der Funktion void glutmotionfunc(void (*func)(int x, int y)); können Sie einen Callback registrieren, der aufgerufen wird, wenn Sie die Maus im GLUT- Fenster bewegen und gleichzeitig eine oder mehrere der Maustasten gedrückt halten. Die beiden x,y-parameter enthalten die Mausposition in Fensterkoordinaten zum Zeitpunkt des Events. 2.5 Die Event-Loop Sind alle Initialisierungen durchgeführt und alle Callbacks registriert, dann wird mit der Funktion void glutmainloop(void); die Event-Loop von GLUT gestartet. Die registrierten Callbacks werden entsprechend aufgerufen, wenn ein Event auftritt. Mit der Funktion void glutidlefunc(void (*func)(void));
7 Literatur 7 können Sie eine Funktion registrieren, die ausgeführt wird, falls gerade keine Events vorleigen. Wird NULL übergeben, dann wird keine Funktion aufgerufen es passiert nichts. Dies stellt natürlich auch den Default-Zustand dar. Literatur [BB03] [Fos96] [KF00] [Kil96a] [Kil96b] BENDER, MICHAEL und BRILL, MANFRED: Computergrafik. Ein anwendungsorientiertes Lehrbuch. Hanser, FOSNER, RON: OpenGL Programming for Windows 95 and Windows NT. Addison-Wesley, KEMPF, RENATE und FRAZIER, CHRIS: OpenGL Reference Manual (2. ed.) - The Official Reference Document to OpenGL. Addison-Wesley, KILGARD, MARK: The OpenGL Utility Toolkit (GLUT) Programming Interface, API Version 3. Silicon Graphics, KILGARD, MARK J.: OpenGL Programming for the X Window System. Addison-Wesley, [WND00] WOO, MASON, NEIDER, JACKIE und DAVIS, TOM: OpenGL Programming Guide (2. ed.) - The Official guide to Learning OpenGL. Addison-Wesley, 2000.
Das OpenGL Utility Toolkit GLUT. Verwendung von GLUT
Verwendung von GLUT Grundlegende Funktionsweise - Öffnen eines Fensters - Registrieren von Callback-Routinen - Start einer Hauptroutine, die erst beim Schließen des Fensters verlassen wird - Beim Auftreten
Spiele, Simulation, dynamische Systeme
Spiele, Simulation, dynamische Systeme Einführung in OpenGL und GLUT Sebastian Skalec (11038991) Christian Fehmer (11042419) Was können wir nach dem Vortrag? Erstellen eines OpenGL-Fensters Motivation
1.1 Verwendung von GLUT
1.1 Verwendung von GLUT Grundlegende Funktionsweise - Öffnen eines Fensters - Registrieren von Callback-Routinen - Start einer Hauptroutine, die erst beim Schließen des Fensters verlassen wird - Beim Auftreten
Kapitel 21: OpenGl 1
Kapitel 21: OpenGl 1 OpenGl Programming Guide 2 OpenGl 200 Befehle in OpenGL Library (geometrische Primitive, Attribute) glcolor3f(1.0,0.0,0.0); glrotatef(30.0,0.0,0.0,1.0); 50 Befehle in OpenGl Utility
Computergraphik Grundlagen
Prof. Stefan Schlechtweg-Dorendorf Hochschule Anhalt (FH) Köthen Fachbereich Informatik Wintersemester 2010/2011 1 / 27 Teil II CG-Programmierung und OpenGL 2 / 27 Inhalt 1. Computergraphik-Programmierung
Einführung in OpenGL. Einführung in OpenGL
OpenGL: Einführung/Standard - OpenGL (Open Graphics Library) ist ein Standard für 3D Rendering und 3D Hardware-Beschleunigung - OpenGL läuft unter Windows, MacOS, Linux, Unix, - Website: http://opengl.org
Computergrafik 1 Übung, Wintersemester 2011. Eclipse Hands-On. C++ Projektsetup mit OpenGL und GLUT unter Eclipse für Windows 22.10.
Computergrafik 1 Übung, Wintersemester 2011 Eclipse Hands-On C++ Projektsetup mit OpenGL und GLUT unter Eclipse für Windows 22.10.12 1 Eclipse - Die IDE 1. Entwicklungsumgebung (IDE) herunterladen / installieren
2 Programmieren in Java I noch ohne Nachbearbeitung
1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe
Eine solche Programmierschnittstelle ist GLUT (OpenGL Utility Toolkit - Aussprache wie glutttony ).
OpenGL Open Graphics Library (OpenGL: Silicon Graphics Inc.) www.opengl.org Aktuelle Version: 4.4 (2013) 1982-92: IRIS GL (für SGI-Rechner) Seit 1992 frei verfügbar Definitionsgremium: OpenGL ARB (Architecture
Computergrafik II. OpenGL Einführung
Computergrafik II OpenGL Einführung OpenGL Rein prozedurales Interface Keine direkten Klassen/Objekte Verwaltung von OpenGL-Strukturen mittels Identifier Explizites funktionales Erzeugen/Löschen von Objekten
OpenGL. Kapitel Grundlagen
Kapitel 21 OpenGL 21.1 Grundlagen OpenGL bietet eine Schnittstelle zwischen dem Anwenderprogramm und der Grafikhardware eines Computers zum Modellieren und Projizieren von dreidimensionalen Objekten. Diese
DirectX und OpenGL. Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006
DirectX und OpenGL Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006 2 Inhalt Einleitung Übersicht DirectX und Komponenten Übersicht OpenGL Sprachlicher Aufbau OpenGL Sprachlicher
Grafikprogrammierung (Echtzeitrendering)
(Echtzeitrendering) erfordert Unterstützung für beide Aufgaben der Computergrafik Geometrische Modellierung Datenstrukturen für geometrische Modelle Schnittstellen für deren Kombination Bildsynthese Rendering
Java Kurzreferenz Für Fortgeschrittene
Java Kurzreferenz Für Fortgeschrittene 1. Initialisierung von Applets: Die Methode init Wenn ein Applet gestartet wird, werden immer zwei Methoden aufgerufen. Diese heissen init und start. Um gewisse Berechnungen
Einführung in C. EDV1-04C-Einführung 1
Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags
Eine Einführung in OpenGL
Eine Einführung in OpenGL Inhaltsverzeichnis 1 Übersicht 2 1.1 Was ist OpenGL?........................... 2 1.2 Was leistet OpenGL?......................... 2 2 Erste Schritte mit OpenGL 3 2.1 Grundstrukturen...........................
Bitmaps. - Definition eigener Zeichenmuster - Definition eigener Schriften. Zeichnen auf Pixel- und Bitmap-Ebene
Bitmaps Grundlagen - Bitmaps sind rechteckige Arrays bestehend aus 0 und 1 Werten - Sie dienen als Zeichenmaske in einem rechteckigen Fensterbereich - Bei gegebner Zeichenfarbe f=(r, B, G) werden die Pixel,
C-Programme kompilieren mit Visual Studio Express
C-Programme kompilieren mit Visual Studio Express Die Beispiele, Aufgaben und Lösungen zum Buch C als erste Programmiersprache können mit Visual Studio Express von Microsoft bearbeitet, kompiliert und
Seitenanzahl 44 GLUT. Anmerkungen, Feedback, etc. sind natürlich wie immer herzlich Willkommen.
Seitenanzahl 44 GLUT Autor: Joachim F. Rohde Homepage: http://www.joachimrohde.com Kontakt: [email protected] Datum der letzten Änderung: 03.06.2003 Datum der Veröffentlichung: 04.05.2005 Info:
Übungsstunde 5 zu Computergrafik 1
Institut für Computervisualistik Universität Koblenz 19. un 20. November 2012 Inhaltsverzeichnis 1 Transformationen Translation Skalierung Rotation 2 Reihenfolge von Transformationen Beispiele 3 Programmieraufgabe
Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
4.2 Programmiersprache C
4.2.1. Elementare Datentypen (signed) int, unsigned int, (signed) short (int), unsigned short (int), (signed) long (int), unsigned long (int) Elementare Datentypen für ganze Zahlen mit oder ohne Vorzeichen.
Einstieg in die Informatik mit Java
1 / 18 Einstieg in die Informatik mit Java Applets Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Einführung 2 Sicherheits-Maßnahmen 3 Ereignisgesteuerte Programmierung
Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff
Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Textausgabe per printf Die Funktion printf ist kein Bestandteil der C Sprache sondern gehört zur C Bibliothek. printf
Übungsstunde 7 zu Computergrafik 1
Institut für Computervisualistik Universität Koblenz 10. und 11. Dezember 2012 Inhaltsverzeichnis 1 Licht und Material Licht in OpenGL Material in OpenGL 2 in C++ Licht in OpenGL Lichtquellen In OpenGL
Variablen, Konstanten und Datentypen
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling [email protected] Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Variablen, Konstanten und Datentypen Überblick
Klausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.
Programmieren bei Dr. Robert Heß TM&M1, IST1 und ET1 Anfang SS 2003 Klausur 1. Aufgabe (2 Punkte) Kodieren Sie folgende Dezimalzahlen in Binärzahlen um. Zeigen Sie den Rechenweg, die negative Zahl soll
Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 1 SS 2016
Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3
Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................
Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29
Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente
C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung
Elementare Datentypen in C++
Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der
4 Formelsammlung C/C++
4 Formelsammlung C/C++ 4.1 Datentypen Datentyp stdint.h type Bits Sign Wertebereich (unsigned) char uint8_t 8 Unsigned 0.. 255 signed char int8_t 8 Signed -128.. 127 unsigned short uint16_t 16 Unsigned
Einführung Programmierpraktikum C Michael Zwick
Einführung Programmierpraktikum C Michael Zwick Vorlesung, Übung & Fragestunde Dr.-Ing. Michael Zwick Raum Z945 [email protected] (089) 289 23609 Tutorium Ab Dienstag: Auswahl Tutoriumsplatz auf www.ldv.ei.tum.de/lehre/computertechnik
Programmierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?
Liebe Leserin, lieber Leser 10 Kapitel i: Schnelleinstieg 13 Kapitel 2: Was sind Programme? 17 Was ist ein Programm? 18 Sprechen Sie Computer? 18 Von der Idee zum Programm 19 Von Windows, Fenstern und
Versuch 3: Kamera 1. In diesem Programm sind die grundlegenden Funktionen der Kamera schon implementiert. Diese Funktionen sind:
Versuch 3: Kamera 1 Was ist ein Bild? Ein Bild ist in diesem Versuch ein zweidimensionales Array vom Typ unsigned char. Jedes Element des Arrays entspricht einem Pixel des Bildes, dessen Wertebereich zwischen
Projekt 3 Variablen und Operatoren
Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.
C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen Leibniz Universität IT Services Anja Aue Zeiger (Pointer) Verweis auf eine Speicherstelle. Speicherung einer Speicheradresse.
Repetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
7.1 Polygon Offset. Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit:
7.1 Polygon Offset Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit: - Polygone sollen einmal als Fläche und einmal in Wireframe-Darstellung
7.4 Tesselierung von Polygonen
Anwendungsgebiet - OpenGL kann direkt nur einfache konvexe Polygone anzeigen - Polygone sind einfach, wenn - sie selbstdurchdringungsfrei sind - sie keine doppelten Ecken enthalten - an einer Ecke genau
Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3
Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................
Grundlagen der Objektorientierten Programmierung - Methoden -
Methoden In ihrem formalen Aufbau entsprechen Java-Methoden den Funktionen in C und C++. Eine Methode dient dazu, eine häufig benötigte Folge von Anweisungen unter einem Namen zusammenzufassen und zum
Die Programmiersprache C
Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,
2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.
Programmieren bei Dr. Robert Heß TM&M1, IST1 und ET1 Ende SS 2003 Klausur 1. Aufgabe (2 Punkte) Kodieren Sie folgende Dezimalzahlen in Binärzahlen um. Zeigen Sie den Rechenweg, die negative Zahl soll im
Programmieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff
Programmieren in C Funktionen mit Zeigern und Adressen Prof. Dr. Nikolaus Wulff ByValue versus byreferenz C übergibt immer Kopien der Variablen an Funktionen. Es ist nur dann möglich die Werte von Variablen
einlesen n > 0? Ausgabe Negative Zahl
1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen
Herzlich willkommen!
Programmiertechnik 1 Herzlich willkommen! Dozent: Dipl.-Ing. Jürgen Wemheuer Teil 6: Zusammenfassung und Beispiele Mail: [email protected] Online: http://cpp.ewla.de/ Zusammenfassung (1) 2 1. Programm in
Grundlagen der OO- Programmierung in C#
Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung 2 Visual Studio 3
Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff
Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen
Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens
Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität
Eine Kommando-Oberfläche für.net
Institut für Systemsoftware O.Univ.-Prof. Dr. Hanspeter Mössenböck Eine Kommando-Oberfläche für.net In.NET (wie auch in vielen anderen Systemen) haben Programme nur einen einzigen Eintrittspunkt (ihre
C-Programmierkurs Mathematik
Mathematik WS 2018/2019 Dr. Bodo Kalthoff Speicher für Werte Variablen Über Variablennamen ansprechbar Sprechende Namen vergeben! Variablen können Zahlen, Buchstaben oder komplexere Werte enthalten Der
Programmiersprachen Einführung in C
Programmiersprachen Einführung in C Teil 2: Prof. Dr. Unser erstes C-Programm int main (int argc, char *argv[]) int i; int sum = 0; for (i = 0; i
Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen
Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik
Die Programmiersprache C
Die Programmiersprache C höhere Programmiersprache (mit einigen assemblerähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,
RO-Tutorien 15 und 16
Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft
Berichte aus der Informatik. Dieter Pawelczak. Start in die C-Programmierung
Berichte aus der Informatik Dieter Pawelczak Start in die C-Programmierung Shaker Verlag Aachen 2012 Inhaltsverzeichnis Inhaltsverzeichnis i 1 Einleitung 1 1.1 Umfeld und Aufbau des Buches 1 Die Programmiersprache
Einstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Grundlagen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White
7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
Einführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
Methoden und Wrapperklassen
Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)
PROCESSING STRUKTUR UND INPUT. Created by Michael Kirsch & Beat Rossmy
PROCESSING STRUKTUR UND INPUT Created by Michael Kirsch & Beat Rossmy INHALT 1. Rückblick 1. Processing Basics 3. Anwendung 1. random 2. 1,2,3,... Integer! 2. else 3. Boolsche Operatoren 3. float 4. Bedingungen
Einstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben
Datenfelder (Array) Seite 1 von 7 Bei den bisherigen Programmen wurde für jede verwendete Variable (oder für jedes Objekt) ein eigener Typ und Name vergeben. Die Initialisierung, d.h. die Belegung mit
C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services
C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften
Arrays (Felder/Vektoren)
Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff
4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen
. Gleitkommazahlen In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen Umrechnen von Einheiten und Währungen Jede Zahl x Q mit x 0 lässt sich folgendermaßen schreiben: x = s m e mit
µversion 2 Einführung
µversion 2 Einführung V1.0 F. Wolf Graz, September 2002 Inhaltsverzeichnis 1 Keil Mikroprozessor-Entwicklungsumgebung 1 2 Menübeschreibung 1 2.1 Hauptmenü 2 2.2 Compilermenü 2 2.3 Debugermenü 2 3 Projekt
Programmierkurs C++ Variablen und Datentypen
Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es in
DAP2-Programmierpraktikum Einführung in C++ (Teil 1)
DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume
FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung
C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen
Typ : void* aktuelle Parameter Pointer von beliebigem Typ
2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben
