Title: Graphics Systems and OpenGL
1Graphics Systems and OpenGL
2Business of Generating Images
- Images are made up of pixels
3RGB
RGB Color cube (what we use in computer graphics)
Other color spaces include HSV, YUV, YCrCb, and
YIQ
4The goal of computer graphics
- Solve the function
- Red _at_ a pixel is f(i,j)
- Green _at_ a pixel is f(i,j)
- Blue _at_ a pixel is f(i,j)
5Two Dimensional Images
Y
- Images (at least the ones in this class) are two
dimensional shapes. - The two axes we will label as X (horizontal), and
Y (vertical).
Y Axis
(0,0)
X Axis
X
6Hardware Pipeline
Input
Output
Computation
We want to draw a rectangle, how do we describe
it to a computer?
Model (n) - object description that a computer
understands.
7Partition the space
1. Define a set of points (vertices) in 2D space.
2. Given a set of vertices, draw lines between
consecutive vertices.
(7,9)
(14,9)
(7,3)
(14,3)
Vertex (pl. Vertices) - a point in 2 or 3
dimensional space.
8Record every position
Bitmap - a rectangular array of bits mapped
one-to-one with pixels.
9Representing Objects
- Most common method is the VERTEX method. Define
the object as a set of points with connectivity
information. - Why is connectivity important?
Connectivity - information that defines which
vertices are connected to which other vertices
via edges. Edge - connects two vertices
10A Simple Program
- Generate a square on a solid background
11simple.c
include ltGL/glut.hgt void mydisplay()
glClear(GL_COLOR_BUFFER_BIT) glBegin(GL_QUADS)
glVertex2f(-0.5, -0.5)
glVertex2f(-0.5, 0.5)
glVertex2f(0.5, 0.5)
glVertex2f(0.5, -0.5) glEnd() glFlush()
int main(int argc, char argv) glutCreateW
indow("simple") glutDisplayFunc(mydisplay)
glutMainLoop()
12How do we do this?
13Practical Approach
- Process objects one at a time in the order they
are generated by the application - Pipeline architecture
- All steps can be implemented in hardware on the
graphics card
Input
Output
Computation
application program
display
14simple.c
include ltGL/glut.hgt void mydisplay()
glClear(GL_COLOR_BUFFER_BIT) glBegin(GL_QUADS)
glVertex2f(-0.5, -0.5)
glVertex2f(-0.5, 0.5)
glVertex2f(0.5, 0.5)
glVertex2f(0.5, -0.5) glEnd() glFlush()
int main(int argc, char argv) glutCreateW
indow("simple") glutDisplayFunc(mydisplay)
glutMainLoop()
15Synthetic Camera Model
projector
p
image plane
projection of p
center of projection
16Vertex Processing
- Much of the work in the pipeline is in converting
object representations from one coordinate system
to another - Object coordinates
- Camera (eye) coordinates
- Screen coordinates
- Every change of coordinates is equivalent to a
matrix transformation - Vertex processor also computes vertex colors
17Projection
- Projection is the process that combines the 3D
viewer with the 3D objects to produce the 2D
image - Perspective projections all projectors meet at
the center of projection - Parallel projection projectors are parallel,
center of projection is replaced by a direction
of projection
18Primitive Assembly
- Vertices must be collected into geometric objects
before clipping and rasterization can take place - Line segments
- Polygons
- Curves and surfaces
19Clipping
- Just as a real camera cannot see the whole
world, the virtual camera can only see part of
the world or object space - Objects that are not within this volume are said
to be clipped out of the scene
20Rasterization
- If an object is not clipped out, the appropriate
pixels in the frame buffer must be assigned
colors - Rasterizer produces a set of fragments for each
object - Fragments are potential pixels
- Have a location in frame bufffer
- Color and depth attributes
- Vertex attributes are interpolated over objects
by the rasterizer
21Fragment Processing
- Fragments are processed to determine the color of
the corresponding pixel in the frame buffer - Colors can be determined by texture mapping or
interpolation of vertex colors - Fragments may be blocked by other fragments
closer to the camera - Hidden-surface removal