Title: Input Devices Introduction to OpenGL
 1Input DevicesIntroduction to OpenGL 
 2Learning Objectives
- Survey of input devices 
- Introduction to OpenGL 
- First OpenGL program with Java bindings 
3Input Devices
- Input devices 
- Keyboards, button boxes, dials 
- Mouse devices 
- Trackballs and spaceballs 
- Joysticks 
- Data gloves 
- Digitizers 
- Image scanners 
- Touch panels 
- Light pens 
- Voice systems 
4Input Devices
- Keyboards, button boxes, dials 
- Standard keyboard 
- Alphanumeric 
- Function keys 
- Button boxset of input dials
5Input Devices
- Mouse devices 
- Mechanical mouse 
- One-button 
- Rotating ball 
- Two perpendicular shafts to capture rotation 
- Optical mouse 
- Optical sensor 
- Laser 
- Grid to detect movement 
- Added widgets 
- Buttons 
- Trackball 
- Thumbwheel. 
6Input Devices
- Trackball 
- A ball device that can be rotated with the 
 fingers or palm of hand
- Spaceball 
- Six degrees of freedom 
- Does not move, detects strain placed on the ball 
 by trying to move it.
7Input Devices
- Joystick 
- A small, vertical lever mounted on a base 
- Movable joystick measures motion 
- Stationary (isometric) joystick measures strain. 
- Data glove 
- Used to grasp a virtual object 
- Measures hand and finger position 
- 2D or 3D 
- Can also be used as input device to detect 
 surface.
8Input Devices
- Digitizers 
- Used for drawing, painting, or selecting 
 positions
- Graphics tablet used to input 2D coordinates by 
 activating a hand cursor or stylus at given
 positions on a flat surface
- Used to trace contours, select precise coordinate 
 positions
- Hand held cursor 
- Stylus 
- Electromagnetic 
- Grid of wires 
- Electromagnetic pulses send an electrical signal 
 in stylus or cursor
- Acoustic 
- Sound waves to detect stylus position by 
 microphones
- Can be 3D. 
- Image scanners
9Input Devices
- Image scanners 
- Used to store images on a computer 
- Hand held 
- Flatbed 
- Drum. 
10Input Devices
- Touch panels 
- Select objects by the touch of a finger 
- Optical 
- Line of infrared light-emitting diodes (LED) 
 along vertical and horizontal edges
- Interrupted when panel is touched 
- Electrical 
- Two transparent plates of material, one 
 conducting, the other resistive
- Touch brings the plates to be in contact with one 
 another, causing a voltage drop
- Measure the voltage drop 
- Acoustical. 
- Light pens 
11Input Devices
- Light pens 
- Pen-shaped device to select screen positions by 
 detecting lights coming from points on the CRT
 screen
- Used to capture position of an object or select 
 menu options.
12Input Devices
- Voice systems 
- Speech recognition systems to recognize voice 
 commands
- Used to activate menu options or to enter data 
- Uses a dictionary from a particular user 
 (learning system).
13Hard-copy Devices
- Hard-copy devices 
- Plotters 
- 2D moving pen with stationary paper 
- 1D pen and 1D moving paper 
- Printers 
- Impact devices 
- Inked ribbon 
- Non impact devices 
- Laser, ink-jet, xerographic, electrostatic, 
 electrothermal.
14Graphics Software
- Graphics software 
- Special purpose 
- For non programmers 
- CAD, CAM, painting, animation 
- General programming packages 
- Library of graphics functions 
- C, C, Java,  
- Picture components (lines, shapes, ) 
- Transformations (color, texture, shading, 
 rotating, )
15Coordinate Representation
- Cartesian coordinates 
- Modeling coordinates (local, master)in the 
 reference frame of each object
- World coordinatesin the scene reference frame 
- Viewing coordinatesview we want of a scene 
- Normalized (device) coordinatesnormalized 
 between 1 and 1 or 0 and 1
- Device coordinates (screen coordinates)
16Coordinate System
(from Donald Hearn and Pauline Baker) 
 17Introduction to OpenGL
- OpenGL 
- First part of Silicon Graphics graphics 
 workstations
- Became hardware independent in early 1990s 
- Maintained by the OpenGL Architecture Review 
 Board
- Developed for 3D scenes 
- 2D scenes as projections where z-coordinate is 0.
18Important Concepts
- Three dimensional concepts 
- Light-material interactions 
- Transformations 
- Modeling 
- Interaction 
- Rendering Algorithms 
-  ... and others
19OpenGL
- Graphics rendering API (Application Programmers 
 Interface)
- Generation of high-quality color images composed 
 of geometric and image primitives
- Window system independent 
- Operating system independent 
- Close to the hardware 
- Algorithms and implementation are important
20Pipeline Model
- Close to hardware 
- Easy to program 
- Direct implementation of synthetic camera 
- Image formation by computer is analogous to image 
 formation by camera (or human)
- Specify viewer, objects, lights 
- Let hardware/software form image (via projection)
21OpenGL Geometric Pipeline
State
ApplicationProgram
ModelView Transformation
Frame Buffer
Rasterization
Projection
Pixels
Vertices 
 22OpenGL as a Renderer
- Two operations (basically) in OpenGL 
- Draw something 
- Change the state of what or how OpenGL draws 
- Geometric primitives 
- Various kinds of points, lines, and polygons 
- Image Primitives 
- Images and bitmaps 
- Separate pipeline for images and geometry 
- Linked through texture mapping 
- Rendering depends on the state of 
- Colors, materials, light sources, etc. 
23OpenGL Architecture
Upper pipeline is for geometric, vector-based 
primitives.
Lower pipeline is for pixel-based, 
image primitives. 
 24OpenGL and the Windowing System
- OpenGL is concerned only with rendering 
- It is window system independent 
- No input functions 
- OpenGL must interact with the underlying OS and 
 windowing system
- Need minimal interface which may be system 
 dependent
- Done through additional libraries AGL, GLX, WGL
25GLU and GLUT
- GLU (OpenGL Utility Library) 
- Part of OpenGL 
- Provides NURBS (splines), etc. 
- GLUT (OpenGL Utility Toolkit) 
- A portable windowing API 
- Not officially part of OpenGL 
- Extremely useful for helping to create images 
 quickly without worrying about the underlying
 windowing system being used
26OpenGL and Related APIs
application program
OpenGL Motif widget or similar
GLUT
GLX, AGLor WGL
GLU
GL
X, Win32, Mac O/S
software and/or hardware 
 27OpenGL Geometric Primitives
- All geometric primitives are specified by vertices
28OpenGL Command Formats
glVertex3fv( v )
Number of components
Data Type
Vector
b - byte ub - unsigned byte s - short us - 
unsigned short i - int ui - unsigned int f - 
float d - double
omit v for scalar form glVertex2f( x, y )
2 - (x,y) 3 - (x,y,z) 4 - (x,y,z,w) 
 29Specifying Geometric Primitives
- Primitives are specified using 
- glBegin( primType ) 
- glEnd() 
- primType determines how vertices are combined
GLfloat red, green, blue Glfloat 
coords3 glBegin( primType ) for ( i  0 i lt 
nVerts i )  glColor3f( red, green, blue 
) glVertex3fv( coords )  glEnd() 
 30Display Window
(from Donald Hearn and Pauline Baker) 
 31Sample Programs
- include ltGL/glut.hgt // (or others, 
 depending on the system in use)
- void init (void) 
-  
-  glClearColor (1.0, 1.0, 1.0, 0.0) // Set 
 display-window color to white.
-  glMatrixMode (GL_PROJECTION) // Set 
 projection parameters.
-  gluOrtho2D (0.0, 200.0, 0.0, 150.0) 
-  
32Sample Programs
- void lineSegment (void) 
-  
-  glClear (GL_COLOR_BUFFER_BIT) // Clear 
 display window.
-  glColor3f (0.0, 0.0, 1.0) // Set line 
 segment color to red.
-  glBegin (GL_LINES) 
-  glVertex2i (180, 15) // Specify 
 line-segment geometry.
-  glVertex2i (10, 145) 
-  glEnd ( ) 
-  glFlush ( ) // Process all OpenGL 
 routines as quickly as possible.
-  
33Sample Programs
- void main (int argc, char argv) 
-  
-  glutInit (argc, argv) 
 // Initialize GLUT.
-  glutInitDisplayMode (GLUT_SINGLE  GLUT_RGB) 
 // Set display mode.
-  glutInitWindowPosition (50, 100) // Set 
 top-left display-window position.
-  glutInitWindowSize (400, 300) // Set 
 display-window width and height.
-  glutCreateWindow ("An Example OpenGL 
 Program") // Create display window.
-  init ( ) // 
 Execute initialization procedure.
-  glutDisplayFunc (lineSegment) // Send 
 graphics to display window.
-  glutMainLoop ( ) // 
 Display everything and wait.
34Output