basic graphics programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · jernej barbic...
TRANSCRIPT
![Page 1: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/1.jpg)
Jernej Barbic University of Southern California
CSCI 420 Computer Graphics Lecture 2
Basic Graphics Programming
Graphics Pipeline OpenGL API Primitives: Lines, Polygons Attributes: Color Example [Angel Ch. 2]
1
![Page 2: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/2.jpg)
5
Teaching Assistant
Yijing Li
Office hours TBA
![Page 3: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/3.jpg)
5
Course Producer
Xiyu Wang
Same office hours as TA
![Page 4: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/4.jpg)
What is OpenGL
4
• A low-‐level graphics library (API) for 2D and 3D interac>ve graphics.
• Descendent of GL (from SGI) • First version in 1992; now: 4.2 (2012) • Managed by Khronos Group (non-‐profit consor>um) • API is governed by Architecture Review Board
(part of Khronos)
![Page 5: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/5.jpg)
Where is OpenGL used
5
• CAD
• Virtual reality
• Scien>fic visualiza>on
• Flight simula>on
• Video games
5
![Page 6: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/6.jpg)
Graphics library (API)
6
• Intermediary between applica>ons and graphics hardware
• Other popular APIs: Direct3D (MicrosoU) OpenGL ES (embedded devices) X3D (successor of VRML) 6
![Page 7: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/7.jpg)
OpenGL is cross-platform
7
• Same code works with liYle/no modifica>ons
• Implementa>ons: Windows, Mac, Linux: ships with the OS Linux: Mesa, a freeware implementa>on.
![Page 8: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/8.jpg)
How does OpenGL work
8
From the programmer’s point of view:
1. Specify geometric objects
2. Describe object properties • Color • How objects reflect light
![Page 9: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/9.jpg)
How does OpenGL work (continued)
9
3. Define how objects should be viewed • where is the camera • what type of camera
4. Specify light sources • where, what kind
5. Move camera or objects around for animation
![Page 10: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/10.jpg)
The result
10
the result
![Page 11: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/11.jpg)
OpenGL is a state machine
11
State variables: color, camera position, light position, material properties...
These variables (the state) then apply to every subsequent drawing command.
They persist until set to new values by the programmer.
![Page 12: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/12.jpg)
OpenGL Library Organization
• GL (Graphics Library): core graphics capabilities • GLU (OpenGL Utility Library): utilities on top of GL • GLUT (OpenGL Utility Toolkit): input and windowing
12
![Page 13: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/13.jpg)
Graphics Pipeline
13
Primitives+ material
properties
Translate Rotate Scale
Is it visible on screen?
3D to 2D Convert to pixels
Shown on the screen (framebuffer)
![Page 14: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/14.jpg)
OpenGL uses immediate-mode rendering
14
• Application generates stream of geometric primitives (polygons, lines)
• System draws each one into the framebuffer
• Entire scene redrawn anew every frame
• Compare to: off-line rendering (e.g., Pixar Renderman, ray tracers)
![Page 15: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/15.jpg)
The pipeline is implemented by OpenGL, graphics driver and the graphics hardware
15
OpenGL programmer does not need to implement the pipeline.
However, pipeline is reconfigurable if needed “shaders”
![Page 16: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/16.jpg)
Graphics Pipeline
16
• Efficiently implementable in hardware (but not in software)
• Each stage can employ multiple specialized processors, working in parallel, busses between stages
• #processors per stage, bus bandwidths are fully tuned for typical graphics use
• Latency vs throughput
![Page 17: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/17.jpg)
Vertices
• Vertices in world coordinates • void glVertex3f(GLfloat x, GLfloat y, GLfloat z)
– Vertex (x, y, z) is sent down the pipeline. – Function call then returns.
• Use GLtype for portability and consistency • glVertex{234}{sfid}[v](TYPE coords)
17
![Page 18: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/18.jpg)
Transformer
• Transformer in world coordinates • Must be set before object is drawn!
glRotatef(45.0, 0.0, 0.0, -1.0); glVertex2f(1.0, 0.0);
• Complex [Angel Ch. 4]
18
![Page 19: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/19.jpg)
Clipper
• Mostly automatic (must set viewport)
19
![Page 20: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/20.jpg)
Projector
• Complex transformation [Angel Ch. 5]
Orthographic Perspective
20
![Page 21: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/21.jpg)
Rasterizer
• Interesting algorithms [Angel Ch. 7] • To window coordinates • Antialiasing
21
![Page 22: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/22.jpg)
Primitives
• Specified via vertices • General schema
glBegin(type); glVertex3f(x1, y1, z1); ... glVertex3f(xN, yN, zN); glEnd();
• type determines interpretation of vertices • Can use glVertex2f(x,y) in 2D
22
![Page 23: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/23.jpg)
Example: Draw Square Outline
• Type = GL_LINE_LOOP
glBegin(GL_LINE_LOOP); glVertex3f(0.0, 0.0, 0.0); glVertex3f(1.0, 0.0, 0.0); glVertex3f(1.0, 1.0, 0.0); glVertex3f(0.0, 1.0, 0.0); glEnd();
• Calls to other functions are allowed between glBegin(type) and glEnd();
23
![Page 24: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/24.jpg)
Points and Line Segments
24
glBegin (GL_POINTS); glVertex3f(…); … glVertex3f(…); glEnd();
Draw points
![Page 25: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/25.jpg)
Polygons
• Polygons enclose an area
• Rendering of area (fill) depends on attributes • All vertices must be in one plane in 3D
25
![Page 26: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/26.jpg)
Polygon Restrictions
• OpenGL Polygons must be simple • OpenGL Polygons must be convex
(a) simple, but not convex
(c) convex
(b) non-simple
26
![Page 27: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/27.jpg)
Why Polygon Restrictions?
• Non-convex and non-simple polygons are expensive to process and render
• Convexity and simplicity is expensive to test • Behavior of OpenGL implementation on
disallowed polygons is “undefined” • Some tools in GLU for decomposing complex
polygons (tessellation) • Triangles are most efficient
27
![Page 28: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/28.jpg)
Polygon Strips
• Efficiency in space and time • Reduces visual artefacts
• Polygons have a front and a back, possibly with different attributes!
28
![Page 29: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/29.jpg)
Attributes: color, shading and reflection properties
• Part of the OpenGL state
• Set before primitives are drawn
• Remain in effect until changed!
29
![Page 30: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/30.jpg)
Physics of Color
• Electromagnetic radiation • Can see only tiny piece of the spectrum
30
![Page 31: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/31.jpg)
Color Filters
• Eye can perceive only 3 basic colors • Computer screens designed accordingly
Amplitude
B
Wavelength [nanometer]
G
R
Source: Vos & Walraven
31
![Page 32: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/32.jpg)
Color Spaces
• RGB (Red, Green, Blue) – Convenient for display – Can be unintuitive (3 floats in OpenGL)
• HSV (Hue, Saturation, Value) – Hue: what color – Saturation: how far away from gray – Value: how bright
• Other formats for movies and printing
32
![Page 33: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/33.jpg)
R
R
B
G
G
B
V
S H
R G
B
RGB vs HSV
Gimp Color Picker
33
![Page 34: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/34.jpg)
Example: Drawing a shaded polygon
• Initialization: the “main” function
int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]); init (); ...
34
![Page 35: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/35.jpg)
GLUT Callbacks
• Window system independent interaction • glutMainLoop processes events
... glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc (keyboard); glutMainLoop(); return 0; }
35
![Page 36: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/36.jpg)
Initializing Attributes
• Separate in “init” function
void init(void) { glClearColor (0.0, 0.0, 0.0, 0.0);
/* glShadeModel (GL_FLAT); */ glShadeModel (GL_SMOOTH); }
36
![Page 37: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/37.jpg)
The Display Callback
• The routine where you render the object • Install with glutDisplayFunc(display)
void display(void) { glClear (GL_COLOR_BUFFER_BIT); /* clear buffer */ setupCamera(); /* set up the camera */ triangle (); /* draw triangle */ glutSwapBuffers (); /* force display */ }
37
![Page 38: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/38.jpg)
Drawing
• In world coordinates; remember state!
void triangle(void) { glBegin (GL_TRIANGLES); glColor3f (1.0, 0.0, 0.0); /* red */ glVertex2f (5.0, 5.0); glColor3f (0.0, 1.0, 0.0); /* green */ glVertex2f (25.0, 5.0); glColor3f (0.0, 0.0, 1.0); /* blue */ glVertex2f (5.0, 25.0); glEnd(); }
38
![Page 39: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/39.jpg)
The Image
glShadeModel(GL_FLAT) glShadeModel(GL_SMOOTH)
color of last vertex each vertex separate color smoothly interpolated
39
![Page 40: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/40.jpg)
Flat vs Smooth Shading
Flat Shading Smooth Shading
40
![Page 41: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/41.jpg)
Projection
• Mapping world to screen coordinates void reshape(int w, int h) { glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); if (w <= h) gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w); else gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0); glMatrixMode(GL_MODELVIEW);
}
41
![Page 42: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/42.jpg)
Orthographic Projection
• 2D and 3D versions • glOrtho2D(left, right, bottom, top) • In world coordinates!
42
![Page 43: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/43.jpg)
Viewport
• Determines clipping in window coordinates • glViewPort(x, y, w, h)
43
![Page 44: Basic Graphics Programmingrun.usc.edu/cs420-s14/lec02-basic/02-basic.pdf · Jernej Barbic University of Southern California CSCI 420 Computer Graphics Lecture 2 Basic Graphics Programming](https://reader034.vdocuments.mx/reader034/viewer/2022051802/5af11f277f8b9aa17b8fdb30/html5/thumbnails/44.jpg)
Summary
1. 2. 3. 4. 5.
A Graphics Pipeline The OpenGL API Primitives: vertices, lines, polygons Attributes: color Example: drawing a shaded triangle
44