Computergraphik I Die Graphik-Pipeline &
|
|
- Erwin Helge Zimmermann
- vor 6 Jahren
- Abrufe
Transkript
1 Computergraphik I Die Graphik-Pipeline & Einführung in OpenGL 3+ G. Zachmann University of Bremen, Germany cgvr.informatik.uni-bremen.de
2 OpenGL OpenGL ist ein Software-Interface für Graphik-Hardware mit ca. 250 verschiedenen Kommandos Hardware-unabhängig, Hersteller-unabhängig Warum Open? Weiterentwicklung durch die Khronos-Gruppe - NVIDIA, ATI, IBM, Intel, SGI,. Von jedem Lizenznehmer erweiterbar (mittels Extensions) Nicht dabei (ein Feature): Handhabung von Fenstern/Windows, Benutzereingabe Der Standard im embedded Bereich (OpenGL ES) Smartphones, car infotainment, aircraft cockpits,... Viele weitere offene Standards der Khronos-Group ergänzen OpenGL Graphik-Pipeline 4
3 Geschichte vor OpenGL Standardisierungsbemühungen vor OpenGL GKS, PHIGS, Proprietäre Systeme HP: Starbase SGI: GL (Graphics Library) Gewinner: SGI mit GL in Verbindung mit sehr guter Hardware OpenGL (1992, Mark Segal & Kurt Akeley) Konkurrenz nur noch durch Microsoft (Direct3D) Graphik-Pipeline 5
4 Khronos Open Standards for Graphics and Compute Khronos 2016 G. Zachmann Computergraphik 1 WS 14 November 2017 Graphik-Pipeline 6
5 Die Grundstruktur von OpenGL-Programmen 3 Arten von Funktionen Zustand ändern Daten (z.b. Vertex-Koordinaten) übergeben Geometrie darstellen Klarer Namensraum Befehle fangen mit gl... an Konstanten mit GL_... Darauf aufbauend gibt es diverse Tools: Glm: Mathematische Funktionen (Vektoren, Matrizen,...) glew/glfw/...: Libraries zur Benutzerinteraktion, Fenstermanagement Qt: beinhaltet Kombination und noch viel mehr Graphik-Pipeline 7
6 "A Trip Down the Graphics Pipeline" Input: Geometric model: description of all objects, surfaces, Transformations Lighting model: Computational description of object and light properties, interaction (e.g., reflection) Synthetic Viewpoint (or Camera): Eye position and viewing frustum Raster Viewport (Frame Buffer): Pixel grid onto which image plane is mapped Output: Colors / Intensities suitable for framebuffer display (for example, 24 Bits RGB values at each pixel) Model-to-World Transformation Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (in Screen Space) Scan Conversion (Rasterization) Visibility / Display Graphik-Pipeline 8
7 Model Transformation (Model-to-World) 3D Modell wird im eigenen Koordinatensystem definiert (object space) Model Transformation positioniert die Objekte in einem allg. Koordinatensystem (world space) Model Transformation Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping y Projection (in Screen Space) Object spaces z World space x Scan Conversion (Rasterization) Visibility / Display Graphik-Pipeline 9
8 Illumination (Beleuchtung, Schattierung) Beleuchten von Polygonen (für Schattierung und Highlights) gemäß der Material-Eigenschaften, Oberflächeneigenschaften und Lichtquellen Lokale Beleuchtungsmodelle (kein Lichttransport von einem Obj zum anderen) Model Transformation Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projektion (in Screen Space) Scan Conversion (Rasterization) Visibility / Display Graphik-Pipeline 10
9 Viewing Transformation Umwandeln von Welt-Koord. nach Kamera-Koord. Bestimme Transformation für komplette Szene so, daß Betrachter-Position in den Ursprung verschoben wird und Blickrichtung entlang (-Z)-Achse ist y eye space Model Transformation Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (in Screen Space) z world space x Scan Conversion (Rasterization) Visibility / Display Graphik-Pipeline 11
10 Clipping Abschneiden der Polygone, die außerhalb des sichtbaren Bereiches liegen (view frustum) Dazu: transformiere Szene in normalisierte Koordinaten (NDC) Modell Transformation Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projektion (in Screen Space) Scan Conversion (Rasterization) eye space NDC Visibility / Display Graphik-Pipeline 12
11 Projektion Das Objekt wird nach 2D projiziert und räumlich diskretisiert (screen space) Modell Transformation NDC Screen Space Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projection (in Screen Space) Scan Conversion (Rasterization) Visibility / Display Graphik-Pipeline 13
12 Scan Conversion (Rasterisierung) Rasterisierung der Polygone in Pixel Ecken-Werte interpolieren (Farbe, Tiefenwert, ) Modell Transformation Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projektion (in Screen Space) Scan Conversion (Rasterization) Visibility / Display Graphik-Pipeline 14
13 Visibility (Sichtbarkeit) u.a. Tests Verdeckungen bestimmen Evtl. weitere Pixel-Operationen: Blending mit vorhandenem Frame-Buffer- Inhalt Maskierung (z.b. wegen Verdeckung durch andere Fenster) Farb-Transfer Modell Transformation Illumination (Shading) Viewing Transformation (Perspective / Orthographic) Clipping Projektion (in Screen Space) Scan Conversion (Rasterization) Visibility / Display Graphik-Pipeline 15
14 Definition Vertex Vertex = "Eckpunkt" = alle Attribute zur vollständigen Spezifikation eines Eckpunktes eines Primitives 3D Koordinaten (zunächst in Modelling Coords!) Farbe (evtl.) Normale (meistens) Textur-Koordinaten (u,v) user-defined attributes (soviele man möchte) Graphik-Pipeline 16
15 Definition Fragment und Pixel Achtung: unterscheide zwischen Pixel und Fragment! Pixel := eine Anzahl Bytes im Framebuffer bzw. ein Punkt auf dem Bildschirm Fragment := eine Menge von Daten (Farbe, Koordinaten, Alpha, ), die zum Einfärben eines Pixels benötigt werden M.a.W.: Ein Pixel befindet sich am Ende der Pipeline (im Framebuffer) Ein Fragment ist ein "Struct", das durch die Pipeline "wandert" und am Ende in ein Pixel gespeichert wird Graphik-Pipeline 17
16 Die GPU als "State-Machine" Man versetzt die "Maschine" in einen Zustand, der so lange besteht, bis er wieder verändert wird Beispiel: kopiere Daten in eine Vertex-Liste Effizienter, als Daten jedes Mal neu zu übergeben Zeichenkommandos State Changes GPU Graphik-Pipeline Zustand: Aktuelle Transf. Aktueller Vertex Buffer Aktuelle Textur Fragmente Graphik-Pipeline 18
17 Beispiel zur Betrachtung des Datenflußes Old mode (fixed-function, immediate): glclearcolor(1, 1, 1, 1); glclear(gl_color_buffer_bit); glloadidentity(); glortho(0, 100, 0, 100, -1, 1); glbegin(gl_polygon); glcolor3f(0, 0.5, 0); glvertex2f(11.0, 31.0); glvertex2f(37.0, 71.0); glcolor3f(0.5, 0, 0); glvertex2f(65.0, 71.0); glvertex2f(91.0, 38.0); glend(); glflush(); // white background // ignore it for now // set projection // start primitive // set color of vertex // send coords of vertex // next vertex, same color // dark red // end primitive // force completion Graphik-Pipeline 19
18 The Pipeline with Regards to Data Flow Force input to canonical format Convert to internal representation E.g., x, y to float Initialize unspecified values E.g., z = 0, w=1 Insert current modal state E.g., color to (0, 0.5, 0, 1) In our example: struct { float x,y,z,w; float r,g,b,a; float normal[3]; } vertex; struct { float x,y,z,w; // 11, 31, 0, 1 float r,g,b,a; // 0, 0.5, 0, 1 } vertex; struct { float x,y,z,w; // 37, 71, 0, 1 float r,g,b,a; // 0, 0.5, 0, 1 } vertex; Application Vertex assembly Framebuffer Display Graphik-Pipeline 20
19 Transform coordinates 4x4 matrix arithmetic Compute (per-vertex) lighting Compute texture coordinates, if procedurally defined Application Vertex assembly Vertex operations Framebuffer Display Graphik-Pipeline 21
20 Group vertices into primitives: points, lines, or triangles Old pipe: Decompose polygons to triangles Duplicate vertices in strips or fans In our example: 0 Create two triangles out of the polygon struct { vertex v0,v1,v2; } triangle; or struct { vertex v0,v1; } line; or struct { vertex v0; } point; Application Vertex assembly Vertex operations Primitive assembly Framebuffer Display Graphik-Pipeline 22
21 Clip to the window boundaries Perform back-face / front-face operations Backface culling Color assignment for 2-sided lighting In our example: nothing happens Application Vertex assembly Vertex operations Primitive assembly Primitive operations Framebuffer Display Graphik-Pipeline 23
22 Determine which pixels are included in the primitive Generate a fragment for each such pixel Calculate attributes (e.g., color) for each fragment In our example: Application Vertex assembly Vertex operations Primitive assembly Primitive operations Rasterization struct { int x,y; float depth; float r,g,b,a; } fragment; Framebuffer Display Graphik-Pipeline 24
23 Depth testing (aka z-buffering) Texture mapping Fog Scissor test Alpha test Color blending In our example: nothing to be done Result: struct { int depth; byte r,g,b,a; } pixel; Application Vertex assembly Vertex operations Primitive assembly Primitive operations Rasterization Fragment operations Framebuffer Display Graphik-Pipeline 25
24 Primitive in OpenGL Points Lines Line-Strip Line-Loop Dreiecke Band aus Dreiecken (Triangle Strip) Fächer aus Dreiecken (Triangle Fan) Graphik-Pipeline 27
25 Nicht mehr verfügbare Primitive (außer im compatibility profile): Polygone Vierecke (Quad / Quadrangle) Band aus Vierecken (Quad Strip) Graphik-Pipeline 28
26 Fixed-Function and Programmable Pipelines auf der GPU OpenGL 1: Fixed Function Pipeline Sehr sorgfältig ausbalanciert Einfachheit über Performance glbegin(gl_ ) glenable, gllight, Status Memory Host Commands glvertex Vertex Transform Cull, Clip & Project Assemble and Rasterize Primitive Fragment Processing Texture Memory Per- Fragment Operations Frame Buffer Operations Frame Buffer Display glteximage Pixel Pack & Unpack Read Back Control Graphik-Pipeline 29
27 OpenGL 2: teilweise programmierbare Pipeline (sog. Shaders) Vertex / Fragment Shader: legen offen, was sowieso schon immer da war Texturspeicher = allgemeiner Speicher für beliebige Daten glbegin(gl_ ) glenable, Status Memory Host Commands glvertex Vertex Processing Cull, Clip & Project Assemble and Rasterize Primitive Fragment Processing Per- Fragment Operations Frame Buffer Operations Frame Buffer Display glteximage Pixel Pack & Unpack Texture Memory Read Back Control Graphik-Pipeline 30
28 Der Immediate Mode Immediate Mode ("direkter Modus"): Primitive werden sofort, wenn sie festgelegt sind, an das Display geschickt (Standard) Die GPU kennt immer nur die Primitive, die aktuell durch die Pipeline laufen Weiteres Beispiel: glbegin( GL_LINES ); glcolor3f ( 1.0, 0.0, 0.0 ); glvertex3f( 0.0, 0.0, 0.0 ); glvertex3f( 1.0, 0.0, 0.0 ); glcolor3f ( 0.0, 1.0, 0.0 ); glvertex3f( 0.0, 0.0, 0.0 ); glvertex3f( 0.0, 1.0, 0.0 ); glcolor3f ( 0.0, 0.0, 1.0 ); glvertex3f( 0.0, 0.0, 0.0 ); glvertex3f( 0.0, 0.0, 1.0 ); glend(); G. Zachmann Computergraphik 1 WS 14 November 2017 Graphik-Pipeline 31
29 Der Retained Mode Retained Mode ("zurückhaltender Modus"): Primitive werden in sog. Buffer Objects gespeichert (Vertex Buffer Objects und Vertex Array Objects) VBO's können auf der GPU (Graphikkarte) gehalten werden Performance - GPU erhält noch weitere Möglichkeiten zur Optimierung Kann mehrmals mit unterschiedlichen Eigenschaften gezeichnet werden VBO's können verschieden kombiniert werden Vertex Data (VBO & VAO) Vertex Shader Primitive Setup and Rasterization Fragment Shader Framebuffer (w/ blending) Graphik-Pipeline 32
30 Weitere Features in OpenGL 3: Kontext-Profile: - Core: keine Fixed-Function-Pipeline, nur Dreiecke, keine Quads / Polygone,... - Compatibility: rückwärts-kompatibel bis OpenGL 1.0 Weitere Shader (Geometry Shader) In OpenGL 4: Noch mehr Shader (Tesselation Shader, Compute Shader) Graphik-Pipeline 33
31 Der Vertex Shader Berechnung der Position im Raum für jeden(!) Vertex (später mehr) out-variablen stellen die Verbindung zum Fragment Shader her gl_position ist eine vordefinierte out-variable, muss gesetzt werden Beispiel: #version 330 // OpenGL 3.3 oder höher uniform mat4 matrix; // Transformationsmatrix in vec3 vposition; in vec3 vcolor; // Position des Vertex // Farbe des Vertex out vec3 fcolor; // ausgehende Farbe des V. void main() { fcolor = vcolor; gl_position = matrix * vec4(vposition, 1.0); } Schnittstelle zur Host-Seite Uniforms matrix Attributes vposition vcolor Graphik-Pipeline 35
32 Der Fragment Shader Berechnet letzten Endes die Farbe für jedes ausgegebene Fragment Beispiel: #version 330 uniform float alpha; // vom Vertex Shader / Rasterizer in vec3 fcolor; // OpenGL 3.3 or higher Schnittstelle zur Host-Seite Uniforms alpha // einzige Ausgabe: die Farbe des Fragments out vec4 color; void main() { color = vec4( fcolor, alpha ); } Graphik-Pipeline 36
33 Das Shader-Programm Attribute können vom Host nur dem Vertex Shader übergeben werden Unbenutzte Variablen werden wegoptimiert Vertex Shader Uniforms matrix Attributes vposition vcolor Fragment Shader Uniforms alpha Shader Programm ID: Uniform 0: matrix 1: alpha ID: Attribute 0: vposition 1: vcolor // ID's / Handles zu den jeweiligen Variablen/Attributen GLint matrixuni = glgetuniformlocation(shprog, "matrix"); // 0 GLint alphauni = glgetuniformlocation(shprog, "alpha"); // 1 GLint vpositionattr = glgetattriblocation(shprog, "vposition"); // 0 GLint vcolorattr = glgetattriblocation(shprog, "vcolor"); // 1 GLint error = glgetattriblocation(shprog, "unknown"); // -1 Graphik-Pipeline 38
34 Prinzipielle Vorgehensweise des Renderns Shader kompilieren und zu Shader-Programm linken IDs der Attribute und Uniforms aus dem Shaderprogramm auslesen Buffer erzeugen Vertex Buffer Object (VBO): für Vertex-Attribute (Position, Farbe, Normale, Textur,...) Layout der Buffer bekannt geben: welches Attribut steht an welcher Stelle im Array "Verbindung" zwischen Attributen und Shader-Variablen (IDs) Vertex Array Object (VAO): verweist auf die VBO's Buffer mit Daten füllen Konkrete Werte an die Uniforms zuweisen Buffer Object rendern (mit aktivem Shader-Programm & VAO) Während eines Frames können Shader, VAOs, VBOs, Uniforms geändert werden Graphik-Pipeline 39
35 Generieren der Buffers Vertex Array Object Attributes 0: // generate vertex buffer object on the GPU glgenbuffers( 1, &m_vertices_buffer ); // set it as the active VBO (think "state") glbindbuffer(gl_array_buffer, m_vertices_buffer); // copy actual vertex coords into the VBO glbufferdata( GL_ARRAY_BUFFER, sizeof(vertices), (void*)vertices, GL_STATIC_DRAW ); verweist Vertex Buffer Object 1:... verweist Vertex Buffer Object GLuint my_obj; // Handle auf neues VAO glgenvertexarrays( 1, & my_obj ); // erstelle 1 Vertex Array Object glbindvertexarray( my_obj ); // setze my_obj als aktives VAO Achtung: für alle Code-Beispiele im Folgenden nehmen wir an, dass glbindvertexarray(my_obj) noch aktiv ist! Graphik-Pipeline 40
36 Beispiel (mit einem VBO pro Attribut) // Vertex positions (XYZ) float * position = { 0.0, 0.0, 0.0, // Ursprung 1.0, 0.0, 0.0, // x-achse 0.0, 0.0, 0.0, // Ursprung 0.0, 1.0, 0.0, // y-achse 0.0, 0.0, 0.0, // Ursprung 0.0, 0.0, 1.0}; // z-achse // Vertex colors (RGB) float * color = { 1.0, 0.0, 0.0, // rot 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, // grün 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, // blau 0.0, 0.0, 1.0}; glgenbuffer( 1, &position_buffer ); // create (empty) VBO glbindbuffer(gl_array_buffer, position_buffer); // use it glbufferdata(gl_array_buffer, sizeof(position), position, GL_STATIC_DRAW);... glgenbuffer( 1, &color_buffer ); // again for colors glbindbuffer(gl_array_buffer, color_buffer); glbufferdata(gl_array_buffer, sizeof(color), color, GL_STATIC_DRAW);... Graphik-Pipeline 41
37 Verbindung zwischen VBO und Shader-Variablen herstellen Shader Programm ID: Sh.-Var. 0: vposition 1: vcolor glbindbuffer( GL_ARRAY_BUFFER, position_buffer ); glbufferdata(... ); glenablevertexattribarray( vpositionattr ); glvertexattribpointer( vpositionattr, // ID of variable in shader prog 3, // # floats per attrib. GL_FLOAT, // Type GL_FALSE, // Normalized? 3*sizeof(float), // Stride length 0 // Offset in VBO (in bytes) );... Vertex Array Obj Attrib. ID : VBO 0: position_buffer Stride length = 3 * sizeof(float) p0 p1 p2 p3... 1: Graphik-Pipeline 42
38 Verbindung zwischen VBO und Shader-Variablen herstellen Shader Programm ID: Sh.-Var. 0: vposition 1: vcolor glbindbuffer( GL_ARRAY_BUFFER, color_buffer ); glbufferdata(... ); glenablevertexattribarray( vcolorattr ); glvertexattribpointer( vcolorattr, // ID of variable in shader prog 3, // # floats per attrib. GL_FLOAT, // Type GL_FALSE, // Normalized? sizeof(float[3]), // Stride length 0 // Offset in VBO (in bytes) );... Vertex Array Obj Attrib. ID : VBO 0: position_buffer 1: color_buffer p0 p1 p2 p3... c0 c1 c2 c3... v0 v1 v2 v3 Graphik-Pipeline 43
39 Rendering gldrawarrays( GL_LINES, // render mode 0, // offset in bytes 3 * 2 // # vertices ); Graphik-Pipeline 44
40 Beispiel mit interleaved Vertex Layout (nur ein VBO) struct VertexData { float position[3]; float color[3]; }; // Vertex Positionen (XYZ, RGB) VertexData * vertices = { {{0.4, -0.2, 0.2}, {1.0, 0.0, 0.0}}, // v0, rot {{-0.1, 0.8, 0.3}, {0.0, 1.0, 0.0}}, // v1, grün {{-0.2, 0.3, 0.1}, {0.0, 0.0, 1.0}}, // v2, blau {{-0.1, -0.2, 0.5},{1.0, 1.0, 1.0}}, // v3, weiß {{0.8, 0.2, 0.1}, {0.0, 0.0, 0.0}}, // v4, schwarz {{0.3, 0.4, 0.0}, {0.5, 0.5, 0.5}} // v5, grau }; Graphik-Pipeline 46
41 VBO erzeugen und füllen glgenbuffer( 1, &vertices_buffer ); glbindbuffer(gl_array_buffer, vertices_buffer ); glbufferdata(gl_array_buffer, sizeof(vertices), vertices, GL_STATIC_DRAW); p0 c0 p1 c1 p2 c2 p3 c3 p4... v0 v1 v2 v3 Graphik-Pipeline 47
42 Verbindungen herstellen Shader Program ID: Sh.-Var. 0: vposition 1: vcolor glenablevertexattribarray( vpositionattr ); glvertexattribpointer( vpositionattr, 3, // # floats per attrib. GL_FLOAT, // Type GL_FALSE, // Normalized? sizeof(vertexdata), // Stride length 0 // Offset in the VBO ); Vertex Array Obj Attrib. ID : VBO 0: vertices_buffer 1: Stride length = sizeof(vertexdata) p0 p1... v0 v1 Graphik-Pipeline 48
43 Verbindungen herstellen Shader Program ID: Sh.-Var. 0: vposition 1: vcolor Vertex Array Obj Attrib. ID : VBO 0: vertices_buffer 1: vertices_buffer glenablevertexattribarray( vcolorattr ); glvertexattribpointer( vcolorattr, 3, // # floats per attrib. GL_FLOAT, // Type of attr: float GL_FALSE, // Normalized? sizeof(vertexdata), // Stride length 3*sizeof(float) // Offset in the VBO ); vertices_buffer p0 c0 p1 c1... Offset Stride length = sizeof(vertexdata) v0 v1 Graphik-Pipeline 50
44 Rendering gldrawarrays( prim_type, 0, 3*2 ); GL_POINTS GL_LINES GL_LINE_STRIP GL_LINE_LOOP GL_TRIANGLES Graphik-Pipeline 51
45 Bemerkung Manchmal könnte es praktisch sein, eine eigene "VAO-Klasse" zu schreiben, die ein Interface ähnlich zum immediate mode hat: // Initialisierung VertexArrayObject vao = new VertexArrayObject( num_vertices ); vao->begin( GL_TRIANGLES ); vao->addvertex( 0.0, 0.0, 0.0 ); vao->addvertex( 0.5, 0.75, 0.0 ); vao->addvertex( -0.5, -0.25, 0.0 );... vao->end(); // display vao->draw(); Graphik-Pipeline 52
46 OpenGL Cheat Sheet zu VAO's & VBO's Vertex Shader glvertexattribpointer Shaderprogram enthält u.a. Liste von Uniforms // globale Werte Liste von Attributen // Werte pro Vertex Link Fragment Shader weitere... glgetuniformlocation glgetattriblocation glcreateshader glshadersource glcompileshader glcreateprogram glattachshader gllinkprogram gluseprogram Vertex Array Object glgenvertexarrays glbindvertexarray Link glenablevertexattribarray glvertexattribpointer Vertex Buffer Object glgenbuffers glbindbuffer glbufferdata Graphik-Pipeline 53
47 Microsoft Excel: Revolutionary 3D Game Engine? J Graphik-Pipeline 54
48 Qt Ab hier nur zu Ihrer Information! Ein API zur Entwicklung von Applikationen mit GUI Vorteile: Cross-platform Wird von vielen professionellen Software-Herstellern eingesetzt Enthält viele weitere, hilfreiche Funktionalität (zusätzlich zum Window- Management und Handling von User-Input) Wird von einem starken Konsortium weiterentwickelt Graphik-Pipeline 55
49 Konzept einer Qt-Applikation Merkregel: Almost everything is a widget! Widget steht für "window gadget" (= "Fenster-Ding") Widgets sind die Bausteine eines Windows oder GUIs - Z.B.: Buttons, Sliders, Graphik-Fenster, Rahmen-Fenster, Jede (!) Qt-Applikation enthält Instanzen von Widgets oder speziellen Versionen von Widgets Graphik-Pipeline 56
50 Ein einfaches QT-Programm #include <QApplication> #include <QPushButton> int main(int argc, char* argv[]) { QApplication app(argc, argv); QPushButton hello( Hallo Welt! ); hello.resize(100,30); hello.show(); return app.exec(); } Graphik-Pipeline 57
51 Signals und Slots liefern Inter-Objekt Kommunikation. Idee: - Objekte, die nichts voneinander wissen, können miteinander verbunden werden Jede von QObject abgeleitete Klasse kann Signals deklarieren, die von Funktionen der Klasse ausgestoßen (emit) werden können. Jede von QObject abgeleitete Klasse kann Slots definieren. Slots sind identisch zu Funktionen; zusätzlich können sie mit Signals "verbunden" werden. Zusätzliche Voraussetzung: - in der Klassendeklaration muss das Q_OBJECT-Makro aufgerufen werden. Die Signals und Slots von Objektinstanzen können miteinander verbunden werden. - Wird ein Signal S von Objekt A mit einem Slot T von Objekt B verbunden, und stößt Objekt A das Signal S aus, so wird Slot T von Objekt B aufgerufen. (Erinnerung: Slots sind Funktionen) Graphik-Pipeline 58
52 Beispiel: connect( button, SIGNAL(clicked()), qapp, SLOT(quit()) ); Graphik-Pipeline 59
53 Beispiel mit Signals and Slots #include <QApplication> #include <QPushButton> int main(int argc, char* argv[]) { QApplication app(argc, argv); QPushButton hello("hello World!"); hello.resize(100,30); hello.show(); QObject::connect( &hello, SIGNAL(clicked()), app, SLOT(quit()) ); return app.exec(); } Graphik-Pipeline 60
54 Kompilieren von Qt-Anwendungen Jede Plattform hat eigene Tools (Compiler, Linker, make- Programm) Qt benötigt zusätzlich Tools (moc, uic) Erstellen von Qt-Applikationen unter Linux: qmake -project generiert Projektdatei (.pro) qmake erstellt aus ihr ein Makefile make erstellt ausführbare Dateien Graphik-Pipeline 61
55 Ein einfaches Qt-Programm mit OpenGL #include <QApplication> #include <QSurfaceFormat> #include "window.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); // configure OpenGL QSurfaceFormat format; format.setversion(3, 3); // OpenGL 3.3 Core format.setprofile(qsurfaceformat::coreprofile); format.setsamples(16); // multisampling: anti-aliasing QSurfaceFormat::setDefaultFormat(format); // create window and make it visible Window window; window.show(); } return app.exec(); Graphik-Pipeline 62
56 Qt und OpenGL #include <QOpenGLFunctions_3_3_Core> #include <QOpenGLWidget> //... class GLWidget : public QOpenGLWidget, protected QOpenGLFunctions_3_3_Core { Q_OBJECT public: GLWidget(QWidget * parent = 0); ~GLWidget(); protected: void initializegl() Q_DECL_OVERRIDE; void resizegl(int w, int h) Q_DECL_OVERRIDE; void paintgl() Q_DECL_OVERRIDE; public Q_SLOTS: //... Q_SIGNALS: //... }; Graphik-Pipeline 63
57 Qt und OpenGL void GLWidget::initializeGL() { initializeopenglfunctions(); glclearcolor(1.0, 1.0, 1.0, 1.0); glenable(gl_depth_test); } // prepare shader programs, buffer, enable settings,... void GLWidget::paintGL { glclear( GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT ); }; // bind programs and buffers and draw arrays/elements till everything is fine Graphik-Pipeline 64
Seminar Game Development Game Computer Graphics. Einleitung
Einleitung Gliederung OpenGL Realismus Material Beleuchtung Schatten Echtzeit Daten verringern Grafik Hardware Beispiel CryEngine 2 Kristian Keßler OpenGL Was ist OpenGL? Grafik API plattform- und programmiersprachenunabhängig
MehrSoftwareprojekt Spieleentwicklung
Softwareprojekt Spieleentwicklung Prototyp I (2D) Prototyp II (3D) Softwareprojekt 12.04. 19.04. 26.04. 03.05. 31.05. Meilenstein I 28.06. Meilenstein II Prof. Holger Theisel, Tobias Günther, OvGU Magdeburg
MehrWas ist QT? Beispiele: KDE Google Earth Mathematika
Einführung in QT Was ist QT? QT ist eine Klassenbibliothek für plattformübergreifende Programmierung graphischer Benutzeroberflächen QT ist für verschiedene Graphikplattformen wie X11 (Unix), Windows,
MehrEinfü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
MehrProbelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering
Probelektion zum Thema Shadow Rendering Shadow Maps Shadow Filtering Renderman, 2006 CityEngine 2011 Viewport Real reconstruction in Windisch, 2013 Schatten bringen viel Realismus in eine Szene Schatten
MehrGrundlagen der 3D-Grafik
Seminar Programmierung von Grafikkarten Grundlagen der 3D-Grafik 8.5.26 Dominik Bossdorf Christian Schulze Marco Sebastiao 1 Inhalt Grafikhardware Rendering Pipeline am Beispiel OpenGL 3D Theorie mit homogenen
MehrOpenGL auf Mac OS X und ios
OpenGL auf Mac OS X und ios Torsten Kammer 28.4.2011 CocoaHeads Aachen Grundlagen API für hardwarebeschleunigte 3D-Grafik Kann auch für schnelles 2D verwendet werden Grundlage von Core Image, Core Animation,
MehrDirectX 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
MehrPraktikum Computergrafik
Praktikum Computergrafik Steven Schlegel Abteilung für Bild- und Signalverarbeitung Betreuer: Steven Schlegel (schlegel@informatik.uni-leipzig.de) Einführung in OpenGL und GLSL OpenGL OpenGL (Open Graphics
MehrComputer-Graphik I Transformationen & Viewing
lausthal Motivation omputer-raphik I Transformationen & Viewing Man möchte die virtuelle 3D Welt auf einem 2D Display darstellen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann
MehrKapitel 4: Schattenberechnung
Kapitel 4: Schattenberechnung 1 Überblick: Schattenberechnung Motivation Schattenvolumen Shadow Maps Projektive Schatten 2 Motivation Wesentlich für die Wahrnehmung einer 3D-Szene Eigentlich ein globaler
MehrGL ShadingLanguage(GLSL)
Was ist GLSL C/Java ähnliche Hochsprache zur Erstellung von GPU-basierter Software (Shader) An die Open Graphics Library (OpenGL) gebunden Darstellung komplexer 2D- und 3D-Szenen auf Basis von Echtzeitberechnungen
MehrComputergrafik 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
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Was ist eine GUI? Was ist QT? Erste Schritte:
MehrEinführung in die Programmierung Wintersemester 2011/12
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : GUI-Programmierung Inhalt Was ist eine GUI? Was
MehrEine Einführung Computergrafik SS14 Timo Bourdon
Eine Einführung Computergrafik SS14 Timo Bourdon Organisatorisches Übung am Freitag den 11. Juli entfällt! Zum OpenGL-Übungsblatt OpenGL 3.0 oder höher notwendig (Shading Language 1.50 oder höher) CIP
MehrOpenGL. (Open Graphic Library)
OpenGL (Open Graphic Library) Agenda Was ist OpenGL eigentlich? Geschichte Vor- und Nachteile Arbeitsweise glscene OpenGL per Hand Debugging Trend Was ist OpenGL eigentlich? OpenGL ist eine Spezifikation
MehrGeometrische Primitive und Hidden Surface Removal
C A R L V O N O S S I E T Z K Y Geometrische Primitive und Hidden Surface Removal Johannes Diemke Übung im Modul OpenGL mit Java Wintersemester 2010/2011 Wiederholung Geometrische Primitive in OpenGL Mit
MehrProseminar: Virtuelle Präsenz. Vortrag: Steve Rechtenbach
Proseminar: Virtuelle Präsenz Vortrag: Steve Rechtenbach Themen: 2/22 Einführung Was ist OpenGL? / Entwicklung Fakten Kleines(!) Beispiel Hello OpenGL Shader Zusammenfassung OpenGL vs Direct3D Einführung:
MehrObjektorientierte Programmierung mit C++ (WS 2010)
Objektorientierte Programmierung mit C++ (WS 2010) Dr. Andreas F. Borchert, Tobias Brosch Institut für Angewandte Informationsverarbeitung Universität Ulm Blatt 11: Abgabetermin 19. Januar 2011 11 Uhr
MehrInteraktive Simulationen Lektion 1/3: Event-Driven Design und Signals
MÜNSTER Interaktive Simulationen Lektion 1/3: Event-Driven Design und Signals Prof. Dr. Christian Engwer & Andreas Buhr 16. April 2014 MÜNSTER Interaktive Simulationen 2 /22 Normales C++ Programm Programmstruktur
MehrQt Programmierung Teil 1 Fenster erstellen by NBBN (http://nbbn.wordpress.com) CrashKurs-Artig. Was brauche ich? -Einige C++ Kenntnisse
Qt Programmierung Teil 1 Fenster erstellen by NBBN (http://nbbn.wordpress.com) CrashKurs-Artig. Was brauche ich? -Einige C++ Kenntnisse Wie man in C++ mit Hilfe von Qt GUI-Anwendungen programmieren kann.
MehrDiplomarbeit. Neue Möglichkeiten durch programmierbare Shader. Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker
Diplomarbeit 5HDO7LPH6SHFLDO (IIHFWV Neue Möglichkeiten durch programmierbare Shader Unter der Leitung von: Prof. Dr.-Ing. Detlef Krömker Betreut von: Paul Grimm, Ralf Dörner Beginn: 01.04.02 Abgabe: 30.09.02
MehrPraktikum: Spieleengine im Eigenbau
Seite 1/17 Praktikum Spieleengine im Eigenbau Alexander Weggerle, Tobias Bäuerle 19.10.09 http://www.saschawillems.de Praktikum: Spieleengine im Eigenbau Seite 2/17 Praktikum Spieleengine im Eigenbau Alexander
MehrGrafikprogrammierung (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
MehrÜbung: Computergrafik 1
Prof. Dr. Andreas Butz Prof. Dr. Ing. Axel Hoppe Dipl.-Medieninf. Dominikus Baur Dipl.-Medieninf. Sebastian Boring Übung: Computergrafik 1 Geometrische Primitive OpenGL Zeichenarten Kurven Primitive Übung
MehrGrundlagen der Spieleprogrammierung
Grundlagen der Spieleprogrammierung Teil I: 3D-Graphik Kapitel 8: Hardware Peter Sturm Universität Trier Outline 1. Übersicht und Motivation 2. Mathematische Grundlagen 3. Das Ideal: Photorealistisch (Raytracing,
MehrComputer-Graphik I. Shader-Programmierung. G. Zachmann University of Bremen, Germany cgvr.informatik.uni-bremen.de
Computer-Graphik I Shader-Programmierung G. Zachmann University of Bremen, Germany cgvr.informatik.uni-bremen.de Eye-dome lighting: https://blog.kitware.com/eye-dome-lighting-a-non-photorealisticshading-technique/
MehrEinführung. GPU-Versuch. Andreas Schäfer Friedrich-Alexander-Universität Erlangen-Nürnberg
GPU-Versuch andreas.schaefer@cs.fau.de Friedrich-Alexander-Universität Erlangen-Nürnberg Praktikum Parallele Rechnerarchitekturen SS2014 Outline 1 Einführung 2 Outlook 1 Einführung 2 Eine kurze Geschichte
MehrInformatik II. Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017
1 Informatik II Übung 6 Giuseppe Accaputo, Felix Friedrich, Patrick Gruntz, Tobias Klenze, Max Rossmannek, David Sidler, Thilo Weghorn FS 2017 Heutiges Programm 2 1 Klassen - Technisch 2 Prediscussion
Mehr(10) Deferred Shading
(10) Deferred Shading Vorlesung Computergrafik II Stefan Müller Dank an Niklas Henrich, Gerrit Lochmann Wdh. 1: Framebufferobjects (FBOs) Statt in den Framebuffer direkt zu rendern, kann man Texturen attachen,
MehrGUI Programmierung mit Qt
GUI Programmierung mit Qt C++ vs. JAVA Norman Wolf 22.04.05 GUI Programmierung mit Qt 1 Einleitung Qt wird von der norwegischen Firma Trolltech entwickelt Es ist kommerzielle Software, die aber von Trolltech
MehrComputergraphik I. Scan Conversion: Lines & Co. Einordnung in die Pipeline. G. Zachmann Clausthal University, Germany zach@tu-clausthal.
11/4/10 lausthal omputergraphik I Scan onversion of Lines. Zachmann lausthal University, ermany zach@tu-clausthal.de Einordnung in die Pipeline Rasterisierung der Objekte in Pixel Ecken-Werte interpolieren
MehrComputergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis
Computergrafik Michael Bender, Manfred Brill Ein anwendungsorientiertes Lehrbuch ISBN 3-446-40434-1 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40434-1 sowie
Mehr(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU
(7) Normal Mapping Vorlesung Computergraphik II S. Müller Dank an Stefan Rilling Einleitung Die Welt ist voller Details Viele Details treten in Form von Oberflächendetails auf S. Müller - 3 - Darstellung
MehrWorkshop: Einführung in die 3D-Computergrafik. Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar
Workshop: Einführung in die 3D-Computergrafik Julia Tolksdorf Thies Pfeiffer Christian Fröhlich Nikita Mattar 1 Organisatorisches Tagesablauf: Vormittags: Theoretische Grundlagen Nachmittags: Bearbeitung
MehrUniversität Osnabrück Fachbereich Mathematik / Informatik. 5. Vorlesung ( )
Universität Osnabrück Fachbereich Mathematik / Informatik 5. Vorlesung (06.05.2013) Prof. Dr. rer. nat. Oliver Vornberger Nico Marniok, B. Sc. Erik Wittkorn, B. Sc. Game Application Layer Rückblick Game
MehrTexture Based Direct Volume Rendering
Texture Based Direct Volume Rendering Vorlesung: "Advanced Topics in Computer Graphics" cbrak@upb.de 1 Agenda 1. Einleitung Volume Rendering 1.1. Volumendatensatz 1.2. Volumenintegral 1.3. Image order
MehrFortgeschrittene Kapitel: Grafische Ausgabe mit C++ Karl Gmeiner
Fortgeschrittene Kapitel: Grafische Ausgabe mit C++ Karl Gmeiner 2015 1 Software-Frameworks am Beispiel von Qt 1.1 Software-Frameworks Software-Frameworks stellen Datenstrukturen, Algorithmen, Entwurfsmuster
MehrAbteilung Bild- und Signalverarbeitung Prof. Dr. Gerik Scheuermann. Tutorial - CGViewer
Universität Leipzig Sommersemester 2007 Institut für Informatik Computergrafik-Vorlesung Abteilung Bild- und Signalverarbeitung Betreuer: Heike Jänicke Prof. Dr. Gerik Scheuermann Tutorial - CGViewer 1
MehrComputergrafik Universität Osnabrück, Henning Wenke, 2012-05-08
Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-08 Noch Kapitel IV: OpenGL Zielsetzungen Hardwarenah aber unabhängig Verschiedene Anwendungsbereiche Wissenschaft, Visualisierung & Entwicklung
MehrSpezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe
Grafikprozessoren Spezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe 2D: Berechnung der Bildes aus einfachen Grafikprimitiven 3D: Bildaufbau aus räumlicher Beschreibung
MehrUIKit (Cocoa Touch) Framework für ios Apps. Objective C. Model View Controller Pattern
ios Rendering ios Architektur UIKit (Cocoa Touch) A composable, reusable, declarative, real-world inspired animation, and interaction system Framework für ios Apps Objective C Model View Controller Pattern
MehrJava 3D. Linien, Flächen und Objekte Axel Bartsch, Okt. 2002
Java 3D Linien, Flächen und Objekte Axel Bartsch, Okt. 2002 Virtual World Koordinaten System Grundlagen zur Definition visueller Objekte Shape3D Unterklasse der Leaf-Klasse Eigenschaften des visuellen
MehrGeneral Purpose Computation on GPUs
General Purpose Computation on GPUs Matthias Schneider, Robert Grimm Universität Erlangen-Nürnberg {matthias.schneider, robert.grimm}@informatik.stud.uni-erlangen.de M. Schneider, R. Grimm 1 Übersicht
Mehr(9) Modernes OpenGL. Vorlesung Computergraphik III S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU
(9) Modernes OpenGL Vorlesung Computergraphik III S. Müller OpenGL Shading Language (GLSL) Teil des OpenGL 2.0 Standards Syntax orientiert sich an C / C++ Funktionen Einfache Datentypen (float, int, bool)
MehrPeakTech Zeitprogramm erstellen über Excel - Beispiel / Timed programs with Excel Example
PeakTech 6180 Zeitprogramm erstellen über Excel - Beispiel / Timed programs with Excel Example 1. Excel Datei erstellen / Create Excel file Öffnen Sie Excel und erstellen eine xls-datei unter einem beliebigen
MehrNumerik und Rechnen. Martin Heide & Dominik Holler. 12. Juni 2006
12. Juni 2006 Bibliothek für Lineare Algebra GPGPU-Programming: Low-Level High-Level Bibliothek Bibliothek für Lineare Algebra Gliederung 1 Bibliothek für Lineare Algebra 2 Skalare Bibliothek für Lineare
MehrGrundlagen der Spieleprogrammierung
Grundlagen der Spieleprogrammierung Teil I: 3D-Graphik Kapitel 9: Engines, Cg und anderes Peter Sturm Universität Trier Outline 1. Übersicht und Motivation 2. Mathematische Grundlagen 3. Das Ideal: Photorealistisch
MehrBlendaX Grundlagen der Computergrafik
BlendaX Grundlagen der Computergrafik Beleuchtungsmodelle (Reflection Models) 16.11.2007 BlendaX Grundlagen der Computergrafik 1 Rendering von Polygonen Der Renderingprozess lässt sich grob in folgende
MehrDie Welt der Shader. Fortgeschrittene Techniken III
Die Welt der Shader Fortgeschrittene Techniken III Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Gliederung 1. Was ist ein Shader? 2. Verschiedene
MehrLichtquellen und Beleuchtung
void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 1 Lokales Beleuchtungsmodell in OpenGL für n Lichtquellen k s 2 Normalenvektoren - Modelview-Transformation
MehrAnsätze 4. GPU. Echtzeit- Raytracing. Polygon- Rendering. Computerspiele Sommer (c) 2013, Peter Sturm, Universität Trier 1
4. GPU Ansätze Echtzeit- Raytracing Modell und Materialeigenschaften auf Raytracer Kontinuierliche Darstellung Polygon- Rendering CPU wählt darzustellende Polygone aus Render Pipeline (c) 2013, Peter Sturm,
MehrWorkshop: Entwickeln mit Qt 4. Daniel Molkentin <molkentin@kde.org>
Workshop: Entwickeln mit Qt 4 Daniel Molkentin Das Wichtigste zuerst! Haben Sie einen Laptop dabei? Nein? Suchen Sie sich schnell einen netten Nachbarn :) Haben Sie Qt installiert?
MehrIntroduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016
to to May 2016 to What is Programming? All computers are stupid. All computers are deterministic. You have to tell the computer what to do. You can tell the computer in any (programming) language) you
MehrPraxisorientierte Einführung in C++ Lektion: "Einführung in das GUI-Toolkit Qt"
Praxisorientierte Einführung in C++ Lektion: "Einführung in das GUI-Toolkit Qt" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte Einführung in C++
MehrPlan für heute. Vorlesungstermine. CG1 & CG2 Vorlesungsthemen. Anwendungsgebiete. Warum Computer Grafik? Computergrafik 1&2 SS 2010
Plan für heute Computergrafik 1&2 SS 2010 http://www.icg.tu-graz.ac.at/courses/cgcv Organisation der Vorlesung Anwendungen der Computergrafik Konzepte der Computergrafik Display Technologies Prof. Institut
MehrEinführung in GLSL - OpenGL Shading Language. Athanasios Karamalis
Einführung in GLSL - OpenGL Shading Language Athanasios Karamalis Allgemein zur Shader-Programmierung Vor 2001 konnte nur die sogenannte Fixed Functionality der Graphik API und Graphikkarte verwendet werden
MehrIntegration von 3D-Visualisierungstechniken in 2D-Grafiksystemen
Mitglied der Helmholtz-Gemeinschaft Inhaltsverzeichnis Integration von 3D-Visualisierungstechniken in 2D-Grafiksystemen Motivation Ergebnisse Ausblick 24. August 2012 Florian Rhiem 24. August 2012 PGI/JCNS
MehrGrundkurs C++ Buildsysteme Versionsverwaltung mit git
Grundkurs C++ Buildsysteme Versionsverwaltung mit git Martin Knopp 09.05.2017 Folie 1/1 GK C++: Buildsysteme, Versionsverwaltung Martin Knopp 09.05.2017 Buildsysteme Beispielhaftes Übersetzungsszenario:
MehrC for Graphics Benjamin Rommel Seminar 'Paralleles Rechnen auf Grafikkarten' Sommersemester 2009 Betreuer: Julian M.
C for Graphics Benjamin Rommel 12.05.2009 Seminar 'Paralleles Rechnen auf Grafikkarten' Sommersemester 2009 Betreuer: Julian M. Kunkel 'C for Graphics', Benjamin Rommel, SS 2009 Inhaltsübersicht Gliederung
MehrLehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme
Grundkurs C++ Buildsysteme Buildsysteme Beispielhaftes Übersetzungsszenario: Verzeichnis tutorial7/ main.cpp, lcdrange.cpp, lcdrange.h *.cpp Kompilieren *.o *.h Grundkurs C++ 2 Headerdateien //blackbox.h
MehrGrundkurs C++ Buildsysteme Versionsverwaltung mit git
Grundkurs C++ Buildsysteme Versionsverwaltung mit git Martin Knopp & Johannes Feldmaier 20.04.2016 Folie 1/22 GK C++: Buildsysteme, Versionsverwaltung Martin Knopp & Johannes Feldmaier 20.04.2016 Buildsysteme
MehrWorkshop: Entwickeln mit Qt 4. Daniel Molkentin <molkentin@kde.org>
Workshop: Entwickeln mit Qt 4 Daniel Molkentin Das Wichtigste zuerst! Haben Sie einen Laptop dabei? Nein? Suchen Sie sich schnell einen netten Nachbarn :) Haben Sie Qt installiert?
MehrComputergraphik 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
MehrRendering Grundlagen Autodesk Maya. Grundlagen. Version 1.0-2009-04-08. 2009 Ingo Clemens brave rabbit www.braverabbit.de
Rendering Grundlagen Version 1.0-2009-04-08 Allgemeine Unterschiede bei Renderern Scanline Rendering Raytrace Rendering Renderlayer Einsatz von Renderlayern Overrides Material Overrides Layer Presets Batch
MehrEinführung in die Programmierung mit Qt
Einführung in die Programmierung mit Qt Dr. Ralf Schüler 5.11.2009 Was ist Qt? sprich: [kju:t] Klassenbibliothek für C++ (ferner Java, Python u.a.) sehr umfangreich: GUI, Stringverarbeitung, reguläre Ausdrücke,
MehrEinführung in OpenGL. Thomas Kalbe 30.10.2007. Technische Universität Darmstadt. thomas.kalbe@gris.informatik.tu-darmstadt.de
Einführung in OpenGL Thomas Kalbe Technische Universität Darmstadt thomas.kalbe@gris.informatik.tu-darmstadt.de 30.10.2007 3D Graphic APIs 2 / 42 API: Application Programming Interface low-level graphic
MehrAsteroids3D Seminar: Game Programming. Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann
Asteroids3D Seminar: Game Programming Anita Dieckhoff, Pedro Flemming, Jan Ole Vollmer Betreuung: Christine Lehmann Gliederung 2 1. Live-Demo und Spielidee 2. Softwarearchitektur und Szenengraph Übersicht
MehrProgrammier-Befehle - Woche 8
Datentypen Array (mehrdim.) mehrdimensionale Massenvariable eines bestimmten Typs Definition: int my arr[2][3] = { {2, 1, 6}, {8, -1, 4} }; Zugriff: my arr[1][1] = 8 * my arr[0][2]; (Die Definition kann
MehrBeleuchtung Schattierung Rasterung
Beleuchtung Schattierung Rasterung Thomas Jung t.jung@htw-berlin.de Beleuchtung, Schattierung und Rasterung in allen Echtzeit-3D-Umgebungen gleich OpenGL Direct3D 3dsmax,... Letzter Bestandteil der Grafikpipeline
MehrRST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck
RST-Labor WS06/07 GPGPU General Purpose Computation On Graphics Processing Units (Grafikkarten-Programmierung) Von: Marc Blunck Ablauf Einführung GPGPU Die GPU GPU Architektur Die Programmierung Programme
MehrOpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer
OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell
MehrJörn Loviscach Hochschule Bremen
Programmierbare Hardware-Shader Jörn Loviscach Hochschule Bremen Überblick Vertex- und Pixel-Shader Anwendungsbeispiele fx-dateien Anwendungsbeispiele Zusammenfassung Puffer Vertex- und Pixel-Shader Hardware-Renderpipeline
MehrOpenGL ES 2.0. OpenGL ist eine Bibliothek zur Ansteuerung von Grafikhardware
Begriffsbestimmung Was ist OpenGL (Open Graphics Library) OpenGL ist eine Bibliothek zur Ansteuerung von Grafikhardware Plattform- und Programmiersprachenunabhängig Darstellung komplexer 2D- und 3D-Szenen
MehrEinführung in die Programmierung Wintersemester 2010/11
Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : GUI-Programmierung Inhalt Was ist eine GUI? Was
MehrComputer Graphik. Mitschrift von www.kuertz.name
Computer Graphik Mitschrift von www.kuertz.name Hinweis: Dies ist kein offizielles Script, sondern nur eine private Mitschrift. Die Mitschriften sind teweilse unvollständig, falsch oder inaktuell, da sie
MehrEinführung in Visual Computing
Einführung in Visual Computing 186.822 eine gemeinsame Lehrveranstaltung von Walter Kropatsch Bildverarbeitung Werner Purgathofer Computergraphik Robert Sablatnig Computer Vision Für wen ist diese Lehrveranstaltung?
MehrC A R L V O N O S S I E T Z K Y. Texture-Mapping. Johannes Diemke. Übung im Modul OpenGL mit Java Wintersemester 2010/2011
C A R L V O N O S S I E T Z K Y Texture-Mapping Johannes Diemke Übung im Modul OpenGL mit Java Wintersemester 2010/2011 Grundlagen Graphische Primitiven werden mit Bildern versehen Eingeführt von Dr. Edwin
MehrVon Keerthikan T. & Siyar Kolusari 10.12.2012
M226 OBJECT ORIENTIERT PROGRAMMIEREN Project Checkers An online multi-player Java Game Von Keerthikan T. & Siyar Kolusari 10.12.2012 Inhaltsverzeichnis 1. Projektbeschreibung 3 1.1. Inhalt 3 2. Ziele
MehrPraxisorientierte Einführung in C++ Lektion: Einführung in das GUI-Toolkit Qt
Praxisorientierte Einführung in C++ Lektion: Einführung in das GUI-Toolkit Qt Christof Elbrechter, Florian P. Schmidt Neuroinformatics Group, CITEC April 5, 2011 Christof Elbrechter Praxisorientierte Einführung
MehrBeleuchtung. in Computerspielen
Beleuchtung in Computerspielen Motivation Überblick Licht und Schattierung Lichtquellen Lokale Beleuchtungsmodelle Schattierungsverfahren Oberflächensimulation Beispiele der CryEngine Ausblick Zusammenfassung
Mehr(5) GPU Einführung. Vorlesung Computergraphik II Stefan Müller. Dank an Markus Geimer, Thorsten Grosch und Niklas Henrich KOBLENZ LANDAU
(5) GPU Einführung Vorlesung Computergraphik II Stefan Müller Dank an Markus Geimer, Thorsten Grosch und Niklas Henrich Die Rendering-Pipeline Rasterisierung (2D) Zerlege den 2D-Polygonzug in Pixel Pro
Mehr12. Java Klassen. Klassen - Technisch. Beispiel: Erdbebendaten. Klassen - Konzeptuell
Klassen - Technisch Eine Klasse ist eine Einheit mit einem Namen, die Daten und Funktionalität beinhaltet 12. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, Kapselung,
MehrExercise 6. Compound Types and Control Flow. Informatik I für D-MAVT. M. Gross, ETH Zürich, 2017
Exercise 6 Compound Types and Control Flow Daniel Bogado Duffner Slides auf: Informatik I für D-MAVT bodaniel@student.ethz.ch n.ethz.ch/~bodaniel Agenda Recap/Quiz Structures Unions Enumerations Loops
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
MehrProseminar Computergrafik: OpenGL. Marcel Heckel
Proseminar Computergrafik: OpenGL Marcel Heckel 23.5.26 . Inhalt 1. Allgemein Was ist OpenGL Geschichte 2. Etwas 3D-Mathematik Das Koordinatensystem Vektoren Matrizen 3. Grundlegendes zu OpenGL Arbeitsweise
MehrJens Konerow. Managed DirectX und C#
Jens Konerow Managed DirectX und C# Jens Konerow Managed DirectX und C# Einstieg und professioneller Einsatz Jens Konerow: Managed DirectX und C# Einstieg und professioneller Einsatz ISBN-10: 3-935082-17-4
MehrPraxisorientierte Einführung in die Computergraphik - Vorlesungsplan -
Praxisorientierte Einführung in die Computergraphik - Vorlesungsplan - 1. Einführung In dieser Lektion erhalten die Teilnehmer einen Überblick über das Wissensgebiet der Computergraphik und ihrer Anwendungsgebiete.
Mehr3D Programmierpraktikum: Szenegraphen und Texturierung
3D Programmierpraktikum: Szenegraphen und Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 1. Juni 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum SS2006
MehrTipps & Tricks. Eine Standardfunktionalität ist das Erstellen von Grafischen Basisobjekten auf dem Patran Viewport.
Eine Standardfunktionalität ist das Erstellen von Grafischen Basisobjekten auf dem Viewport. Anders als bei Titeln bewegen sich die Grafikobjekte mit dem Modell mit. Ein im Elementschwerpunkt platzierter
MehrSoftwareschnittstellen
P4.1. Gliederung Rechnerpraktikum zu Kapitel 4 Softwareschnittstellen Einleitung, Component Object Model (COM) Zugriff auf Microsoft Excel Zugriff auf MATLAB Zugriff auf CATIA Folie 1 P4.2. Einleitung
MehrTube Analyzer LogViewer 2.3
Tube Analyzer LogViewer 2.3 User Manual Stand: 25.9.2015 Seite 1 von 11 Name Company Date Designed by WKS 28.02.2013 1 st Checker 2 nd Checker Version history Version Author Changes Date 1.0 Created 19.06.2015
MehrEinführung in Visual Computing
Einführung in Visual Computing 186.822 eine gemeinsame Lehrveranstaltung von Werner Purgathofer Computergraphik Robert Sablatnig Computer Vision Für wen ist diese Lehrveranstaltung? Pflicht in den Bachelorstudien
MehrPraktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization
Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10 Billboards Letztes Übungsblatt: Meshes & Instancing um dem Terrain zusätzliche Details (Vegtation) hinzuzufügen. Nachteil:
MehrEinführung in Truevision3D
Einführung in Truevision3D Einleitung: In diesem Artikel werden wir uns mit der Truevision Engine beschäftigen, ihr werdet lernen wie man in C# auf die Engine zugreift und wie man einfache 2D Ausgaben
MehrGrafikkarten-Architektur
> Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: s.albers@wwu.de 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur
MehrPraktikum IKT 3. Semester
Praktikum IKT 3. Semester Dr. Andreas Müller, TU Chemnitz, Fakultät für Informatik Inhaltsverzeichnis 1 1 Einführung in QT 1.1 Die QT-Bibliothek Informationen: http://www.trolltech.com Lehner, B: KDE-
MehrComputer Graphik (CS231) - Installation der Software
UNIVERSITÄT BASEL Prof. Dr. Thomas Vetter Departement Mathematik und Informatik Spiegelgasse 1 CH 4051 Basel Tobias Maier (tobias.maier@unibas.ch) Jasenko Zivanov (jasenko.zivanov@unibas.ch) Marc Schmidlin
Mehr