Upload
tyler-thornton
View
216
Download
0
Embed Size (px)
Citation preview
OpenGL & GLUTMouse Interaction &
Camera ControlMouse events, Advanced camera control
George GeorgievTelerik Corporationwww.telerik.
com
Table of Contents GLUT Mouse Interaction
Mouse up/down events
Passive motion
Active motion OpenGL Camera
Default transformation
“Manual” control
Custom camera class
2
GLUT Mouse Interaction
Mouse event callbacks
GLUT Mouse Interaction
4
GLUT provides mouse detection capabilities Advantages
Multi-platform
Similar to other GLUT routines
Easy to code
Disadvantages
Doesn’t receive device information
No scroll information
Unstable ‘leave’ and ‘enter’ events
GLUT Mouse Interaction
5
Detecting mouse buttons Registering callback function
glutMouseFunc(void(*func)(int button, int state, int x, int y))
func – mouse button callback function
button – mouse button raising the event
state – type of event
x, y – cursor coordinates (from upper left corner)
GLUT Mouse Interaction
6
Detecting mouse buttons (2) Callback parameter values
button
GLUT_LEFT_BUTTON
GLUT_MIDDLE_BUTTON
GLUT_RIGHT_BUTTON
state
GLUT_DOWN
GLUT_UP
GLUT Mouse Interaction
7
Detecting mouse buttons (2) Callback parameter values
button
GLUT_LEFT_BUTTON
GLUT_MIDDLE_BUTTON
GLUT_RIGHT_BUTTON
state
GLUT_DOWN
GLUT_UP
GLUT Mouse Interaction
8
Detecting movement Types
Passive
Mouse moves
No buttons pressed
Active
Mouse moves
One or more buttons pressed
GLUT Mouse Interaction
9
Passive motion Registering callback function
glutPassiveMotionFunc(void(*func)(int x, int y))
func – mouse passive motion callback
x, y – cursor coordinates (from upper left corner)
GLUT Mouse Interaction
10
Active motion Registering callback function
glutMotionFunc(void(*func)(int x, int y))
func – mouse active motion callback
x, y – cursor coordinates (from upper left corner)
GLUT Mouse Interaction GLUT Mouse leave and entry routines Detect when cursor leaves and
enters window
Registering callback
glutEntryFunc(void(*func)(int state))
Func – callback handling cursor leaving and entering window
State – enter or leave event
GLUT_ENTERED
GLUT_LEFT
11
GLUT Mouse Interaction Cursor-related routines
glutWarpPointer (int x, int y)
Sends cursor to specified coordinates
glutSetCursor (int cursor)
Sets the cursor image (style) for the window
Values:
GLUT_CURSOR_NONE, GLUT_CURSOR_INFO,
GLUT_CURSOR_DESTROY, etc…
Google for more (much, much more)12
Mouse Interaction Object-oriented mouse handling
Custom mouse class
Current cursor position
Last cursor position and/or drag-begin position
Current mouse button states
Last mouse button states
Cursor style
Anything else you can think of13
Custom mouse classLive Demo