OpenGL 2.0 Vertex Arrays
|
|
|
- Linus Nikolas Fertig
- vor 8 Jahren
- Abrufe
Transkript
1 OpenGL 2.0 Vertex Arrays Boguslaw Sylla Interaktive 3D-Computergrafik SS 2010 Hochschule RheinMain
2 Inhalt des Vortrags 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer Mehrere Arrays InterleavedArrays Elementweise (ein Objekt) ArrayElement Listenweise (ein Objekt) DrawElements, DrawRangeElements Listenweise (mehrere Objekte) MultiDrawElements Direkt (ein Objekt) DrawArrays Direkt (mehrere Objekte) MultiDrawArrays 2 von 40
3 1 Ein- / Ausschalten von Arrays 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer Mehrere Arrays InterleavedArrays Elementweise (ein Objekt) ArrayElement Listenweise (ein Objekt) DrawElements, DrawRangeElements Listenweise (mehrere Objekte) MultiDrawElements Direkt (ein Objekt) DrawArrays Direkt (mehrere Objekte) MultiDrawArrays 3 von 40
4 1 Ein- / Ausschalten von Arrays 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState void glenableclientstate(glenum array) void gldisableclientstate(glenum array) Gibt an welche Daten-Felder momentan benutzt werden sollen. array := GL_COLOR_ARRAY für Farben in RGB oder RGBA, GL_EDGE_FLAG_ARRAY zum Abschalten des Zeichnens von Punkten/Kanten bei Vertexen, GL_FOG_COORDINATE_ARRAY, GL_INDEX_ARRAY, GL_NORMAL_ARRAY für Normalvektoren, GL_SECONDARY_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY und GL_VERTEX_ARRAY für Vertexe // Einschalten glenableclientstate(gl_color_array); glenableclientstate(gl_vertex_array); // Spezifizieren der Daten... // Zeichnen der Objekte... // Ausschalten gldisableclientstate(gl_color_array); gldisableclientstate(gl_vertex_array); 4 von 40
5 2 Spezifizieren der Daten 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer Mehrere Arrays InterleavedArrays Elementweise (ein Objekt) ArrayElement Listenweise (ein Objekt) DrawElements, DrawRangeElements Listenweise (mehrere Objekte) MultiDrawElements Direkt (ein Objekt) DrawArrays Direkt (mehrere Objekte) MultiDrawArrays 5 von 40
6 2 Spezifizieren der Daten 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer void glcolorpointer(glint size, GLenum type, GLsizei stride, const GLvoid *pointer) void gledgeflagpointer(glsizei stride, const GLvoid *pointer) void glfogcoordpointer(glenum type, GLsizei stride, const GLvoid *pointer) void glindexpointer(glenum type, GLsizei stride, const GLvoid *pointer) void glnormalpointer(glenum type, GLsizei stride, const GLvoid *pointer) void glsecondarycolorpointer(glint size, GLenum type, GLsizei stride, const GLvoid *pointer) void gltextcoordpointer(glint size, GLenum type, GLsizei stride, const GLvoid *pointer) void glvertexpointer(glint size, GLenum type, GLsizei stride, const GLvoid *pointer) Verbindet ein Daten-Feld. In dem Feld müssen sich die Daten in einheitlichem Format befinden, deren Elemente jeweils als Datenpakete verstanden werden können, z.b. je drei Elemente nacheinander für X, Y, und Z oder je vier Elemente für R, G, B und A. size := 2, 3 oder 4 ist die Anzahl der Elemente die jeweils ein Datenpaket bilden (siehe untere Tabelle) type := Datentyp der einzelnen Elemente (siehe untere Tabelle) stride := 0 (Sonderbedeutung) wenn Datenpaket an Datenpaket ohne Pausen im Array, sonst Abstand (Offset) vom ersten Element eines Datenpaketes zum ersten Element des darauf folgenden Datenpaketes *pointer := Adresse des ersten Elementes 6 von 40
7 2 Spezifizieren der Daten 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer Befehle für Daten-Felder size type glcolorpointer() 3, 4 GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_INT, GL_UNSIGNED_INT, GL_FLOAT, GL_DOUBLE gledgeflagpointer() 1 GLboolean glfogcoordpointer() 1 GL_FLOAT, GL_DOUBLE glindexpointer() 1 GL_UNSIGNED_BYTE, GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE glnormalpointer() 3 GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE glsecondarycolorpointer() 3 GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, G_INT, GL_UNSIGNED_INT, GL_FLOAT, GL_DOUBLE gltextcoordpointer() 1, 2, 3, 4 GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE glvertexpointer() 2, 3, 4 GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE 7 von 40
8 2 Spezifizieren der Daten 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer /******************************************************************************* * erste Möglichkeit mit separaten Daten-Feldern ******************************************************************************/ glenableclientstate(gl_color_array); glenableclientstate(gl_vertex_array); static GLfloat color_array[] = { 1.0, 0.0, 0.0, // Rot 0.0, 1.0, 0.0, // Grün 1.0, 1.0, 0.0, // Gelb 0.0, 0.0, 1.0 }; // Blau static GLfloat vertex_array[] = { 0.0, 0.0, 0.0, 25.0, 0.0, 0.0, 25.0, 25.0, 0.0, 0.0, 25.0, 0.0 }; // z.b. für GL_QUADS glcolorpointer(3, GL_FLOAT, 0, color_array); glvertexpointer(3, GL_FLOAT, 0, vertex_array); // mach was das erste mal... 8 von 40
9 2 Spezifizieren der Daten 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer /******************************************************************************* * zweite Möglichkeit mit einem Daten-Feld ******************************************************************************/ glenableclientstate(gl_color_array); glenableclientstate(gl_vertex_array); static GLfloat color_and_vertex_array[] = { 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 25.0, 0.0, 0.0, 1.0, 1.0, 0.0, 25.0, 25.0, 0.0, 0.0, 0.0, 1.0, 0.0, 25.0, 0.0 }; glcolorpointer(3, GL_FLOAT, 6*sizeof(GLfloat), &color_and_vertex_array[0]); glvertexpointer(3, GL_FLOAT, 6*sizeof(GLfloat), &color_and_vertex_array[3]); // mach was das zweite mal... 9 von 40
10 2 Spezifizieren der Daten 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer Mehrere Arrays InterleavedArrays Elementweise (ein Objekt) ArrayElement Listenweise (ein Objekt) DrawElements, DrawRangeElements Listenweise (mehrere Objekte) MultiDrawElements Direkt (ein Objekt) DrawArrays Direkt (mehrere Objekte) MultiDrawArrays 10 von 40
11 2 Spezifizieren der Daten 2 Spezifizieren der Daten Mehrere Arrays InterleavedArrays void glinterleavedarrays(glenum format, GLsizei stride, void *pointer) Wird bei gemischten Daten-Feldern eingesetzt. Schaltet alle in Format angegebenen Daten-Felder-Typen ein und alle übrigen aus. Erspart des Weiteren alle gl*pointer(). Bei eingeschaltetem Multitexturing, betrifft das Kommando nur die aktive Textur. format := einer von 14 Konfigurationswerten (siehe untere Tabelle) stride := 0 (Sonderbedeutung) wenn Datenpaket an Datenpaket ohne Pausen im Array, sonst Abstand (Offset) vom ersten Element eines Datenpacketes zum ersten Element des darauf folgenden Datenpaketes *pointer := Adresse des ersten Elementes 11 von 40
12 2 Spezifizieren der Daten 2 Spezifizieren der Daten Mehrere Arrays InterleavedArrays format EF, FC, I, SC T C N V stride=0 ist wie nachfolgender Wert GL_V2F F F F F T 2*sizeof(GLfloat) GL_V3F F F F F T 3*sizeof(GLfloat) GL_C4UB_V2F F F T F T 4*sizeof(GLubyte) + 2*sizeof(GLfloat) GL_C4UB_V3F F F T F T 4*sizeof(GLubyte) + 3*sizeof(GLfloat) GL_C3F_V3F F F T F T 6*sizeof(GLfloat) GL_N3F_V3F F F F T T 6*sizeof(GLfloat) GL_C4F_N3F_V3F F F T T T 10*sizeof(GLfloat) GL_T2F_V3F F T F F T 5*sizeof(GLfloat) GL_T4F_V4F F T F F T 8*sizeof(GLfloat) GL_T2F_C4UB_V3F F T T F T 4*sizeof(GLubyte) + 5*sizeof(GLfloat) GL_T2F_C3F_V3F F T T F T 8*sizeof(GLfloat) GL_T2F_N3F_V3F F T F T T 8*sizeof(GLfloat) GL_T2F_C4F_N3F_V3F F T T T T 12*sizeof(GLfloat) GL_T4F_C4F_N3F_V4F F T T T T 15*sizeof(GLfloat) 12 von 40
13 2 Spezifizieren der Daten 2 Spezifizieren der Daten Mehrere Arrays InterleavedArrays /******************************************************************************* * dritte Möglichkeit mit einem Daten-Feld und glinterleavedarrays() ******************************************************************************/ // glenableclientstate(gl_color_array); // unnötig // glenableclientstate(gl_vertex_array); // unnötig static GLfloat color_and_vertex_array[] = { 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 25.0, 0.0, 0.0, 1.0, 1.0, 0.0, 25.0, 25.0, 0.0, 0.0, 0.0, 1.0, 0.0, 25.0, 0.0 }; glinterleavedarrays(gl_c3f_v3f, 0, color_and_vertex_array); // mach was das dritte mal von 40
14 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer Mehrere Arrays InterleavedArrays Elementweise (ein Objekt) ArrayElement Listenweise (ein Objekt) DrawElements, DrawRangeElements Listenweise (mehrere Objekte) MultiDrawElements Direkt (ein Objekt) DrawArrays Direkt (mehrere Objekte) MultiDrawArrays 14 von 40
15 Elementweise (ein Objekt) ArrayElement 15 von 40
16 Elementweise (ein Objekt) ArrayElement // mach was das erste mal... // erste Möglichkeit der elementweisen Dereferenzierung mit C-Mitteln glbegin(gl_triangles); glcolor3fv(color_array + 0*3); glvertex3fv(vertex_array + 0*3); glcolor3fv(color_array + 1*3); glvertex3fv(vertex_array + 1*3); glcolor3fv(color_array + 3*3); glvertex3fv(vertex_array + 3*3); // Zeichne buntes Dreieck // 3 weil size=3 bei glcolorpointer() // 3 weil size=3 bei glvertexpointer() // 3 weil size=3 bei glcolorpointer() // 3 weil size=3 bei glvertexpointer() // 3 weil size=3 bei glcolorpointer() // 3 weil size=3 bei glvertexpointer() glend(); 16 von 40
17 Elementweise (ein Objekt) ArrayElement void glarrayelement(glint ith) Dereferenziert die Daten vom i-ten Element aus allen zur Verfügung gestellten Daten-Feldern auf einmal. Dieses Kommando sollte nur zwischen glbegin() und glend() verwendet werden, weil sonst der Status-Zeiger (ith) für alle zur Verfügung gestellten Daten-Felder gesetzt wird. Das Kommando ruft je nachdem welche Daten-Felder zur verfügung gestellt wurden (in unspezifizierter Reihenfolge) glcolor[size][type]v(), gledgeflagv(), glfogcoord[type]v(), glindex[type]v(), glnormal3[type]v(), glsecondarycolor3[type]v(), gltextcoord[size][type]v() und auf jeden Fall glvertex[size][type]v() zuletzt. Dabei gilt für size und type jeweils das was dafür bei den jeweiligen gl*pointer() angegeben wurde. ith := Nummer des Elements (in C mit 0 beginnend, Element #1=0, #2=1, #3=2 etc.) 17 von 40
18 Elementweise (ein Objekt) ArrayElement // mach was das erste mal... // zweite Möglichkeit der elementweisen Dereferenzierung mit OpenGL-Mitteln glbegin(gl_triangles); // Zeichne buntes Dreieck glarrayelement(0); glarrayelement(1); glarrayelement(3); glend(); 18 von 40
19 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer Mehrere Arrays InterleavedArrays Elementweise (ein Objekt) ArrayElement Listenweise (ein Objekt) DrawElements, DrawRangeElements Listenweise (mehrere Objekte) MultiDrawElements Direkt (ein Objekt) DrawArrays Direkt (mehrere Objekte) MultiDrawArrays 19 von 40
20 Listenweise (ein Objekt) DrawElements, DrawRangeElements 20 von 40
21 Listenweise (ein Objekt) DrawElements, DrawRangeElements // nur vordere Flächen zeichnen glenable(gl_cull_face);glcullface(gl_back); glenableclientstate(gl_color_array); glenableclientstate(gl_vertex_array); static GLfloat color_array[] = {1.0, 0.0, 1.0, // Magenta 1.0, 0.0, 0.0, // Rot 1.0, 1.0, 0.0, // Gelb 1.0, 1.0, 1.0, // Weiss 0.0, 0.0, 1.0, // Blau 0.0, 0.0, 0.0, // Schwarz 0.0, 1.0, 0.0, // Grün 0.0, 1.0, 1.0 }; // Cyan static GLfloat vertex_array[] = {-25.0, -25.0, 25.0, 25.0, -25.0, 25.0, 25.0, 25.0, 25.0, -25.0, 25.0, 25.0, -25.0, -25.0, -25.0, 25.0, -25.0, -25.0, 25.0, 25.0, -25.0, -25.0, 25.0, -25.0}; // Würfel glcolorpointer(3, GL_FLOAT, 0, color_array); glvertexpointer(3, GL_FLOAT, 0, vertex_array); 21 von 40
22 Listenweise (ein Objekt) DrawElements, DrawRangeElements void gldrawelements(glenum mode, GLsizei count, GLenum type, void *indices) void gldrawrangeelements(glenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, void *indices) Fasst mehrere glarrayelement() in sich zusammen, um ein Objekt zu zeichnen. Das Kommando darf nicht zwischen glbegin() und glend() stehen, das verursacht einen error. Bei gldrawrangeelements() dürfen keine Indices außerhalb von [start, end] referenziert werden, was dabei passiert ist implementationsabhängig. mode := Angabe was gezeichnet werden soll wie bei glbegin(); GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP oder GL_POLYGON start: = minimal vorkommendes Indice end := maximal vorkommendes Indice count := Anzahl der glarrayelement() die ausgeführt werden sollen type := Datentyp der Elemente in Daten-Feld *indices; GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT oder GL_UNSIGNED_INT *indices := Daten-Feld mit Indices die z.b. ein Polygon beschrieben int i; glbegin(mode); for(i=0; i<count; i++) glarrayelement(indices[i]); glend(); 22 von 40
23 Listenweise (ein Objekt) DrawElements, DrawRangeElements /******************************************************************************* * erste Möglichkeit mit separaten Indice-Feldern und mehreren gldrawelements() ******************************************************************************/ // mehrere Listen für Flächen (Polygone) erstellen static GLubyte vorne[] = {0, 1, 2, 3}; static GLubyte hinten[] = {5, 4, 7, 6}; static GLubyte links[] = {4, 0, 3, 7}; static GLubyte rechts[] = {1, 5, 6, 2}; static GLubyte oben[] = {3, 2, 6, 7}; static GLubyte unten[] = {4, 5, 1, 0}; // Flächen zeichnen gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, vorne); gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, hinten); gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, links); gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, rechts); gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, oben); gldrawelements(gl_quads, 4, GL_UNSIGNED_BYTE, unten); 23 von 40
24 Listenweise (ein Objekt) DrawElements, DrawRangeElements /******************************************************************************* * zweite Möglichkeit mit einem Indice-Feld und einem gldrawelements() ******************************************************************************/ // eine Liste für Flächen (Polygone) erstellen static GLubyte alles[] = {0, 1, 2, 3, 5, 4, 7, 6, 4, 0, 3, 7, 1, 5, 6, 2, 3, 2, 6, 7, 4, 5, 1, 0}; // Flächen zeichnen gldrawelements(gl_quads, 24, GL_UNSIGNED_BYTE, alles); 24 von 40
25 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer Mehrere Arrays InterleavedArrays Elementweise (ein Objekt) ArrayElement Listenweise (ein Objekt) DrawElements, DrawRangeElements Listenweise (mehrere Objekte) MultiDrawElements Direkt (ein Objekt) DrawArrays Direkt (mehrere Objekte) MultiDrawArrays 25 von 40
26 Listenweise (mehrere Objekte) MultiDrawElements 26 von 40
27 Listenweise (mehrere Objekte) MultiDrawElements // Farbe setzen GlColor3f(1.0, 0.0, 0.0); // Rot glenableclientstate(gl_vertex_array); static GLfloat vertex_array[] = {-25.0, -25.0, 25.0, 25.0, -25.0, 25.0, 25.0, 25.0, 25.0, -25.0, 25.0, 25.0, -25.0, -25.0, -25.0, 25.0, -25.0, -25.0, 25.0, 25.0, -25.0, -25.0, 25.0, -25.0}; // Würfel glvertexpointer(3, GL_FLOAT, 0, vertex_array); 27 von 40
28 Listenweise (mehrere Objekte) MultiDrawElements /******************************************************************************* * erste Möglichkeit mit separaten Indice-Feldern und mehreren gldrawelements() ******************************************************************************/ // mehrere Listen für Flächen (Polygone) erstellen static GLubyte erstes_linestrip[] = {0, 1, 2, 3}; static GLubyte zweites_linestrip[] = {5, 4, 7}; // zwei Linestrips zeichnen gldrawelements(gl_line_strip, 4, GL_UNSIGNED_BYTE, erstes_linestrip); gldrawelements(gl_line_strip, 3, GL_UNSIGNED_BYTE, zweites_linestrip); /******************************************************************************* * zweite Möglichkeit mit einem Indice-Feld und einem gldrawelements() ******************************************************************************/ // Bei diesem Beispiel mit GL_LINE_STRIP nicht möglich, da einmal 4 und einmal 3 // Indices verwendet werden und somit ein Zusammenfassen für ein // gldrawelements() nicht möglich ist. Ausserdem würden die Linestrips verbunden // werden 28 von 40
29 Listenweise (mehrere Objekte) MultiDrawElements void glmultidrawelements(glenum mode, GLsizei *count, GLenum type, void **indices, GLsizei primcount) Fasst mehrere gldrawelements() in sich zusammen, um mehrere Objekt zu zeichnen. Das Kommando darf nicht zwischen glbegin() und glend() stehen, das verursacht einen error. mode := Angabe was gezeichnet werden soll wie bei gldrawelements(); GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP oder GL_POLYGON *count := Array dessen Elemente jeweils angeben, wie viel Indices jedes gldrawelements() bearbeiten soll type := Datentyp der Elemente in Daten-Feld *indices von gldrawelements(); GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT oder GL_UNSIGNED_INT **indices := Array von Pointern auf mehrere Indice-Felder, die pro gldrawelements() verwendet hätten sollen primcount := Anzahl der gldrawelements() die zusammengefasst werden sollen int i; for(i=0; i<primcount; i++) { if(count[i]>0) gldrawelements(mode, count[i], type, indices[i]); } 29 von 40
30 Listenweise (mehrere Objekte) MultiDrawElements /******************************************************************************* * dritte Möglichkeit mit separaten Indice-Feldern ******************************************************************************/ // mehrere Listen für Flächen (Polygone) erstellen static GLubyte erstes_linestrip[] = {0, 1, 2, 3}; static GLubyte zweites_linestrip[] = {5, 4, 7}; // weitere benötigte Angaben für glmultidrawelements() static count[] = {4, 3}; // Anzahl Elemente in jedem Indice-Feld static GLvoid *indices[2] = {erstes_linestrip, zweites_linestrip}; // zwei Linestrips zeichnen glmultidrawelements(gl_line_strip, count, GL_UNSIGNED_BYTE, indices, 2); 30 von 40
31 Listenweise (mehrere Objekte) MultiDrawElements /******************************************************************************* * vierte Möglichkeit mit einem Indice-Feld ******************************************************************************/ // eine List für Flächen (Polygone) erstellen static GLubyte alle_linestrips[] = {0, 1, 2, 3 5, 4, 7}; // weitere benötigte Angaben für glmultidrawelements() static count[] = {4, 3}; // Anzahl Elemente in jedem Indice-Feld static GLvoid *indices[2] = {alle_linestrips, alle_linestrips[4]}; // zwei Linestrips zeichnen glmultidrawelements(gl_line_strip, count, GL_UNSIGNED_BYTE, indices, 2); 31 von 40
32 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer Mehrere Arrays InterleavedArrays Elementweise (ein Objekt) ArrayElement Listenweise (ein Objekt) DrawElements, DrawRangeElements Listenweise (mehrere Objekte) MultiDrawElements Direkt (ein Objekt) DrawArrays Direkt (mehrere Objekte) MultiDrawArrays 32 von 40
33 Direkt (ein Objekt) DrawArrays 33 von 40
34 Direkt (ein Objekt) DrawArrays glenableclientstate(gl_color_array); glenableclientstate(gl_vertex_array); static GLfloat color_array[] = { 1.0, 0.0, 0.0, // Rot 0.0, 1.0, 0.0, // Grün 1.0, 1.0, 0.0, // Gelb 0.0, 0.0, 1.0 }; // Blau static GLfloat vertex_array[] = { 0.0, 0.0, 0.0, 25.0, 0.0, 0.0, 25.0, 25.0, 0.0, 0.0, 25.0, 0.0 }; // z.b. für GL_QUADS glcolorpointer(3, GL_FLOAT, 0, color_array); glvertexpointer(3, GL_FLOAT, 0, vertex_array); 34 von 40
35 Direkt (ein Objekt) DrawArrays void gldrawarrays(glenum mode, GLint first, GLsizei count) Zeichnet direkt aus den Daten-Feldern ohne Indice-Listen. Das Kommando darf nicht zwischen glbegin() und glend() stehen, das verursacht einen error. mode := Angabe was gezeichnet werden soll wie bei glbegin(); GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP oder GL_POLYGON first := erstes Element (Datenpaket) count := Anzahl der Elemente (Datenpakete) die abgearbeitet werden sollen int i; glbegin(mode); for(i=0; i<count; i++) glarrayelements(first + i); glend(); 35 von 40
36 Direkt (ein Objekt) DrawArrays /******************************************************************************* * erste Möglichkeit zwei Objekte mit zwei gldrawarrays() zu zeichnen ******************************************************************************/ // zwei Dreiecke zeichnen gldrawarrays(gl_triangles, 0, 3); gldrawarrays(gl_triangles, 1, 3); 36 von 40
37 1 Ein- / Ausschalten von Arrays EnableClientState, DisableClientState 2 Spezifizieren der Daten Einzelne Arrays ColorPointer, EdgeFlagPointer, FogCoordPointer, IndexPointer, NormalPointer, SecondaryColorPointer, TextCoordPointer, VertexPointer Mehrere Arrays InterleavedArrays Elementweise (ein Objekt) ArrayElement Listenweise (ein Objekt) DrawElements, DrawRangeElements Listenweise (mehrere Objekte) MultiDrawElements Direkt (ein Objekt) DrawArrays Direkt (mehrere Objekte) MultiDrawArrays 37 von 40
38 Direkt (mehrere Objekte) MultiDrawArrays void glmultidrawarrays(glenum mode, GLint *first, GLsizei *count, GLsizei primcount) Fasst mehrere gldrawarrays() in sich zusammen, um mehrere Objekt zu zeichnen. Das Kommando darf nicht zwischen glbegin() und glend() stehen, das verursacht einen error. mode := Angabe was gezeichnet werden soll wie bei glbegin(); GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP oder GL_POLYGON *first := Array dessen Elemente jeweils angeben, wo sich jeweils das erste Element (Datenpaket) pro gldrawarrays() befindet *count() := Array dessen Elemente jeweils angeben, wieviele Elemente (Datenpakete) pro gldrawarrays() bearbeitet werden sollen primcount := Anzahl der gldrawarrays() die zusammengefasst werden sollen int i; for(i=0; i<primcount; i++) { if(count[i]>0) gldrawarrays(mode, first[i], count[i]); } 38 von 40
39 Direkt (mehrere Objekte) MultiDrawArrays /******************************************************************************* * zweite Möglichkeit zwei Objekte mit einem glmultidrawarrays() zu zeichnen ******************************************************************************/ // weitere benötigte Angaben für glmultidrawelements() static GLint *first[2] = {0, 1}; static GLint *count[2] = {3, 3}; // zwei Dreiecke zeichnen glmultidrawarrays(gl_triangles, first, count, 2}; 39 von 40
40 Quellen Funktionen OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 2, 5th Edition - Aug Codes Selbst erstellt Bilder Selbst erstellt 40 von 40
Ü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
Texture Mapping. Texturen
Grundlagen - Eine Textur ist ein Bild, das auf eine Oberfläche einer Geometrie aufgebracht ist - erlauben eine realistischere Darstellung von Oberflächen - können auf alle Primitive, nicht nur Polygone
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
CGVert. Projekt. 3D-Scannen. Multimarker Tracking. Triangulierung. Low-Cost Scanner P 4. Ball-Erkennung. 3D Positionsbestimmung. Kalmanfilter. CGVert.
Seminar-Vortrag Projektgruppen der Vertiefung Computergrafik (Vorträge am 29.11.2006 ab 8.50Uhr) Themenauswahl Bis heute (25.10.2006) um 16.00Uhr Vortrag Am 29.11.2006 Dauer: 30min Medium Beamer und/oder
Grafikprogrammierung mit OpenGL
Technische Universität Dresden Dresden, August 2003 Fakultät Informatik Institut für Software- und Multimediatechnik Lehrheft Computergrafik Herausgabe: K. Hoedt W. Mascolus Fakultät Informatik Lehrheft
Aufgaben und Lösungen
Aufgaben und Lösungen c Michael Bender, Manfred Brill Oktober 005 Sie finden in diesem Dokument alle Aufgaben und die zugehörigen Lösungen aus Michael Bender, Manfred Brill: Computergrafik. Auflage, Hanser
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
Erste Schritte in OpenGL
Erste Schritte in OpenGL Modelierung Aus Punkten werden geometrische Körper Komplexe Objeckte werden aus meheren einfachen Objeckten erstellt Dazu müssen Vertexes (Punkte) im virtuellen Raum angefordnet
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...........................
Grafikprogrammierung mit OpenGL I
Grafikprogrammierung mit OpenGL I Proseminar Computergrafik Sommersemester 2 TU Dresden Johannes Völker Matrikelnummer: 3478976 [email protected] Dozent: Wilfried Mascolus Lehrstuhl für Computergraphik
UIKit (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
Grundlagen von Corel Draw
Grundlagen von Corel Draw Allgemeines Corel Draw ist ein so genanntes Vektorgrafik-Programm. Der Vorteil von Vektorgrafiken besteht darin, dass die Qualität auch beim Vergrößern im Gegensatz zu Bitmap-Bildern
Einführung OpenGL und GLUT WPF Spiele, Simulation und dynamische Systeme
Einführung OpenGL und GLUT WPF Spiele, Simulation und dynamische Systeme bei Prof. Dr. Wolfgang Konen erstellt von: Sebastian Skalec, 11038991 Christian Fehmer, 11042419 Fachhochschule Köln Campus Gummersbach
Zeiger, Arrays und Strings in C und C++
Zeiger, Arrays und Strings in C und C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für
Kurzeinführung in OpenGL(ES)
Kurzeinführung in OpenGL(ES) Matthias Braun [email protected] Institut für Programmstrukturen und Datenorganisation Lehrstuhl für Programmierparadigmen Wintersemester 2009/10 Wintersemester 2009/10
OpenGL 3.1. Kapitel Einordnung und Motivation
Kapitel 21 OpenGL 3.1 21.1 Einordnung und Motivation In der Rastergrafik, deren Grundlagen in den Kapiteln 13 bis 19 behandelt wurden, wird Materie als Geometrie modelliert und zusätzlich werden deren
Das ausführbare Programm Bsp1.cfg, Bsp1.dof, Bsp1.dpr, Bsp1.res Projektdateien für Delphi 7 Prak.pas
Fakultät Informatik, Professur Computergraphik und Visualisierung 1 1 EINFÜHRUNG Zu diesem Praktikum wird ein vorbereitetes Delphi-Projekt zur Verfügung gestellt. Es ist so aufgebaut, dass man wichtige
Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen
Java programmieren mit JavaKara Eine Zusammenfassung in Beispielen Kleeblätter in einer Zeile zählen @Override public void mymainprogram() { int anzahlkleeblaetter = 0; for (int x = 0; x < world.getsizex();
Java Einführung Klassendefinitionen
Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse
Datentypen: Enum, Array, Struct, Union
Datentypen: Enum, Array, Struct, Union C-Kurs 2013, 2. Tutorium Freitagsrunde http://wiki.freitagsrunde.org 10. September 2013 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
Internationaler Studiengang Medieninformatik
HTW Berlin Prof. Dr. Kai Uwe Barthel Nachname: Vorname: Codename: Matr. Nr: Internationaler Studiengang Medieninformatik Grundlagen digitaler Medien Sitzplatz: Punkte: Note: Nachklausur WS09/10 26. 3.
Zeiger in C und C++ Zeiger in Java und C/C++
1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,
Modellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Praktikum Computergrafik
Praktikum Computergrafik Steven Schlegel Abteilung für Bild- und Signalverarbeitung Betreuer: Steven Schlegel ([email protected]) Einführung in OpenGL und GLSL OpenGL OpenGL (Open Graphics
KAPITEL 4: Bildbearbeitung Kopiervorlagen und Arbeitsblätter
Kopiervorlagen und Arbeitsblätter 4. Bildbearbeitung Farben 1. Aufgabe a) Wofür steht RGB? R: G: B : b) Wofür steht CMYK? C: M: Y : K : 2. Aufgabe Mit 8 Bit können Farben dargestellt werden. 16,7 Millionen
C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue
C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections Leibniz Universität IT Services Anja Aue Arrays... speichern mehrere Werte vom gleichen Datentyp. fassen zusammenhängende Werte
2. Semester, 2. Prüfung, Lösung
2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter
Programmieren mit OpenGL und GLUT
Programmieren mit OpenGL und GLUT Prof. Dr. Manfred Brill Oktober 2003 Inhaltsverzeichnis 1 OpenGL 1 1.1 Bibliotheken und Header-Dateien.... 1 1.2 OpenGL Datentypen... 2 2 GLUT 3 2.1 Ein typisches GLUT-Hauptprogramm........
Access 2010 Programmierung Schleifen
Access 2010 Programmierung Schleifen Gehe nach links oder rechts Gehe solange geradeaus... Beispiel für Schleifen In einem Formular gibt der Benutzer für den Farbanteil Rot einen Unter- und Obergrenze
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse
Graphic Coding. Klausur. 9. Februar 2007. Kurs A
Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt
C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14
C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung
II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
OpenGL vs. Direct3D Ein 3D-API Vergleich
OpenGL vs. Direct3D Ein 3D-API Vergleich 3D-APIs (Application Programming Interface)sind Software-Schnittstellen, um über einen Standard auf die Hardware des Rechners zugreifen zu koennen. Direct3D von
Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem
Grundzüge der Wirtschaftsinformatik WS 2002/03 Wiederholung Java Heiko Rossnagel www.m-lehrstuhl.de accelerate.com Grundzüge der Wirtschaftsinformatik WS 2002/03 1 Programmierzyklus Problem Formulierung
Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18
C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen
Protokoll. Farben und Spektren. Thomas Altendorfer 9956153
Protokoll Farben und Spektren Thomas Altendorfer 9956153 1 Inhaltsverzeichnis Einleitung Ziele, Vorwissen 3 Theoretische Grundlagen 3-6 Versuche 1.) 3 D Würfel 7 2.) Additive Farbmischung 8 3.) Haus 9
Kurzanleitung - Anwendung des NÖ-Atlas. Erfassen von Forststraßen und Bestandesflächen
Kurzanleitung - Anwendung des NÖ-Atlas Erfassen von Forststraßen und Bestandesflächen Noe Atlas - EINSTIEG Einstieg. Einstieg unter www.noe.gv.at. Auf NÖ-Karten im rechten oberen Feld klicken Noe Atlas
3D Programmierpraktikum: Schattenberechnung in Echtzeit
3D Programmierpraktikum: Schattenberechnung in Echtzeit Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 20. Juli 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum
Verwenden von Farben. Drucker und CMYK. Bildschirme und RGB. Farblaserdrucker Phaser 7750
Verwenden von Farben Dieses Thema hat folgenden Inhalt: Drucker und CMYK auf Seite 2-38 Bildschirme und RGB auf Seite 2-38 Bildverarbeitung auf Seite 2-39 Einstellen der Farben mit der TekColor-Farbkorrektur
Praxis der Programmierung
Dynamische Datentypen Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Dynamische Datentypen 2 Dynamische Datentypen
FARBTIEFE / KANÄLE 1 5
1 5 FARBTIEFE Die Farbtiefe gibt an, wieviel bit an Informationen pro Pixel gespeichert werden. Je mehr bits gespeichert werden, desto mehr verschiedene Farbabstufungen können dargestellt werden. Farbtiefe
Einfü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
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
1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)
Der folgende Mitschrieb wurde von Prof. Alexa am 16.07.2008 als Probeklausur in der MPGI2 Vorlesung gezeigt und wurde auf http://www.basicinside.de/2008/node/94 veröffentlicht. Die Abschrift ist unter
Was passt nicht dazu? Warum? Streiche durch! Wie nennt man diese Gegenstände mit einem Wort? Was fehlt auf diesem Bild? Zeichne das, was fehlt, ein!
Was passt nicht dazu? Warum? Streiche durch! Wie nennt man diese Gegenstände mit einem Wort? Was fehlt auf diesem Bild? Zeichne das, was fehlt, ein! Was kann in dem leeren Feld sein? Male es dazu! Was
Einführung in OpenGL. Thomas Kalbe 30.10.2007. Technische Universität Darmstadt. [email protected]
Einführung in OpenGL Thomas Kalbe Technische Universität Darmstadt [email protected] 30.10.2007 3D Graphic APIs 2 / 42 API: Application Programming Interface low-level graphic
Abgabe: (vor 12 Uhr) Aufgabe 3.1 (P) Kontrollflussgraph. Zeichnen Sie für das folgende MiniJava-Programm den Kontrollflussgraphen.
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 3 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,
Hannover: Lebensqualität in der Südstadt
Hannover: Lebensqualität in der Südstadt Schülerhandreichung zum Umgang mit Spatial Commander Ein Projektentwurf im Rahmen des Seminars Der PC Einsatz im Geographieunterricht der Leibniz Universität Hannover
Wertebereich und Genauigkeit der Zahlendarstellung
Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden
Grundlagen der 3D-Computergrafik Programmieren mit OpenGL
Grundlagen der 3DComputergrafik Programmieren mit OpenGL Marc Wagner [email protected] 13. November 1998 Was ist OpenGL? OpenGL (Open Graphics Library) ist ein Softwareinterface zum
Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian
Einführung in die Programmierung Arvid Terzibaschian 1 Arrays 2 Arrays: Motivation Gegeben: monatliche Durchschnittstemperaturen der letzten 5 Jahre Gesucht: Mittelwerte für Jahre, Monate, Jahreszeiten,
Anleitung. SEA-WAR 3D Objektmanager
Anleitung SEA-WAR 3D Objektmanager by SieMaSoft David Siebert [08.2005] Seite 1 von 11 Inhaltsverzeichnis 1. Wellen... 3 2. Intro... 3 3. 3D-Objekte... 3 3.1. Allgemein... 3 3.2. Steuerung... 3 3.3. Objekterstellung...
C# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
Variablen manipulieren per JDI
Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt
Revu Tutorial: Markup-Liste
Revu Tutorial: Markup-Liste Die Markup-Liste ist eine spezialisierte Registerkarte mit einer horizontalen Anordnung, die leistungsstarke Funktionen bereithält, um auf die Anmerkungen in einer PDF-Datei
Vorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
3. Aufgabe: Bitmap-Datei
1 Einleitung 3. Aufgabe: Bitmap-Datei In dieser Programmieraufgabe soll eine Grafik erstellt und gespeichert werden. Es wurde das Bitmap-Format von Microsoft gewählt, da es recht einfach erstellt und von
Klausur Fachprüfung Wirtschaftsinformatik. Name:
Klausur Fachprüfung Wirtschaftsinformatik Dauer: 2 Stunden Datum: 02.10.2003 Name: Punkte True-or-False: von 15 Punkte Multiple Choice: von 15 Punkte Quickies: von 30 Punkte Shorties: von 20 Punkte Longies:
Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr
3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,
Zeiger: Der Adressoperator &
Zeiger: Der Adressoperator & Variablen werden im Computer im Speicher abgelegt. Nach der Deklaration int a,b,c; double x,y,z; Sieht die Speicherbelegung etwa wie folgt aus: a b c x y z Jede Variable hat
Graphische Datenverarbeitung und Bildverarbeitung
Graphische Datenverarbeitung und Bildverarbeitung Hochschule Niederrhein Rendering-Pipeline und Modellierung Graphische DV und BV, Regina Pohle, 17. Rendering-Pipeline und Modellierung 1 Einordnung in
Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl
Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt
Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl
Name: Vorname: Matr. Nr.: Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl Zwischenklausur zu Einführung in die Informatik I Hinweis: In dieser Zwischenklausur
Lektion 3: Wiederholungen
Lektion 3: Wiederholungen Bearbeitet von Britta Schreiber, Jens Haeler & Atal Ashna Bei einigen der bisher behandelten Prozeduren wurden einzelne Befehle oder Befehlsfolgen mehrfach wiederholt. Beispiel:
Programmierpraktikum 3D Computer Grafik
Prof. Andreas Butz, Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Dynamische Schattenberechnung Agenda Der Stencil-Puffer Der 1-bit Stencil-Puffer Der 8-bit Stencil-Puffer Volumetrische
1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung
M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales
Algorithmen & Datenstrukturen 1. Klausur
Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse
Verschiedene Quader mit gleichem Rauminhalt
Kopiervorlage 4 Verschiedene Quader mit gleichem Rauminhalt Aufgaben:. Baut aus 2 Einheitswürfeln den Quader mit der größten Oberfläche und gebt die Länge der Kanten an (ein Einheitswürfel hat die Kantenlänge
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
5 Programme mit Parametern
5 Programme mit Parametern In Lektion 3 haben wir gelernt, Programmen einen Namen zu geben und sie dann mit dem Namen aufzurufen, um das gewünschte Bild vom Computer zeichnen zu lassen. In Lektion 4 haben
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
Bearbeitungszeit: 120 Minuten. Kommentare kosten Zeit; kommentieren Sie ihr Programm nur da, wo der Code alleine nicht verständlich wäre.
Fakultät IV Elektrotechnik/Informatik Klausur Einführung in die Informatik I für Elektrotechniker Name:... Matr.-Nr.... Bearbeitungszeit: 120 Minuten Bewertung (bitte offenlassen : ) Aufgabe Punkte Erreichte
Software-Projekt: Mensch ärgere Dich nicht. Dokumentation Softwareprojekt: Mensch ärgere Dich nicht
Dokumentation Softwareprojekt: Mensch ärgere Dich nicht Das Programm Mensch ärgere Dich nicht ermöglicht das Spielen des gleichnamigen Spieles über Netzwerke. Jeder Spieler verfügt dabei über einen Clienten,
TEXTEFFEKTE TEXTFELDER VERWENDUNG VON TEXTFELDERN. Markieren Sie den Text, und klicken Sie in der Registerkarte Start auf das Symbol
TEXTEFFEKTE Markieren Sie den Text, und klicken Sie in der Registerkarte Start auf das Symbol Texteffekte. Der Katalog klappt auf, und Sie können einen Effekt auswählen. Über Kontur, Schatten, Spiegelung
Der gelbe Weg. Gestaltungstechnik: Malen und kleben. Zeitaufwand: 4 Doppelstunden. Jahrgang: 6-8. Material:
Kurzbeschreibung: Entlang eines gelben Weges, der sich von einem zum nächsten Blatt fortsetzt, entwerfen die Schüler bunte Fantasiehäuser. Gestaltungstechnik: Malen und kleben Zeitaufwand: 4 Doppelstunden
(4) Polygon Clipping. Vorlesung Computergrafik T. Grosch
(4) Polygon Clipping Vorlesung Computergrafik T. Grosch Wiederholung Letzte Woche Linien zeichnen 1001 1000 1010 B A E H 0001 0010 Linien Clipping 0000 Heute Cohen-Sutherland: Rechteckiges Clip-Polygon
Einführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
Tutoraufgabe 1 (2 3 4 Bäume):
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.0.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden aus
Java Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
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
Addieren und subtrahieren
Addieren und subtrahieren Zahlenmauern Mirko und Luca schreiben möglichst oft die Ziffer in ihre Zahlenmauer.. Mirko 0 0 8 Luca 0 0 Basissteine:, 0, (Die Zahl 0 ist verboten.) 90 0 Basissteine:,,, 0 (Die
LCD-Verwaltungssoftware LCD-VSW
Mit der LCD Verwaltungssoftware können die Textinformationen für die verschiedenen Anzeigen z. B. LCD UP, Tableaubaustein EB, Busch-triton erstellt Innerhalb eines Projektes können mehrere LCDs verwendet
Vorkurs C++ Programmierung
Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)
