Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
18 views

Opengl Modeling and Programming Event Driven Input

Display lists and modeling allow building hierarchical models by incorporating relationships between model parts. An eye display list is defined and called within a face display list to draw the eye as part of the face. Event-driven input includes mouse, window, and keyboard events. Mouse events occur on button presses/releases and pass button, state, and coordinates. Window resize events change the window size and require adjusting the projection and viewport. Keyboard events pass the key and coordinates, and GLUT provides modifiers. The display callback redraws the screen, while idle callbacks generate graphics when no other events occur. GLUT supports multiple windows through window IDs.

Uploaded by

Preethi M S
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views

Opengl Modeling and Programming Event Driven Input

Display lists and modeling allow building hierarchical models by incorporating relationships between model parts. An eye display list is defined and called within a face display list to draw the eye as part of the face. Event-driven input includes mouse, window, and keyboard events. Mouse events occur on button presses/releases and pass button, state, and coordinates. Window resize events change the window size and require adjusting the projection and viewport. Keyboard events pass the key and coordinates, and GLUT provides modifiers. The display callback redraws the screen, while idle callbacks generate graphics when no other events occur. GLUT supports multiple windows through window IDs.

Uploaded by

Preethi M S
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

OPENGL - MODELING AND PROGRAMMING EVENT DRIVEN INPUT

3.5 Display Lists And Modeling

Building hierarchical models involves incorporating relationships between various


parts of a model

#define EYE 1 glTranslatef(……);


glCallList(EYE);
glNewList(EYE);
/* code to draw eye */
glEndList();

# define FACE 2
glNewList(FACE);
/* Draw outline */
glTranslatef(…..)
glCallList(EYE);

3.6 Programing Event Driven Input

Pointing Devices :
A mouse event occurs when one of the buttons of the mouse is pressed or released
void myMouse(int button, int state, int x, int y)
{
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
exit(0);
}
The callback from the main function would be :
glutMouseFunc(myMouse);
Window Events
Most windows system allows user to resize window.
This is a window event and it poses several problems like
– Do we redraw all the images
– The aspect ratio
– Do we change the size or attributes of the
primitives to suit the new window

void myReshape(GLsizei w, GLsizei h)


{
/* first adjust clipping box */
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0,(GLdouble)w, 0.0, (GLdouble)h);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

/* adjust viewport */
glViewport(0,0,w,h);
}

Keyboard Events
When a keyboard event occurs, the ASCII code for the key that generated the event and the
mouse location are returned.
E.g.
void myKey(unsigned char key, int x, int y)
{
if (key==‘q’ || key==‘Q’)
exit(0);
}
Callback : glutKeyboardFunc(myKey);
GLUT provides the function glutGetModifiers function enables us to define
functionalities for the meta keys
The Display and Idle callbacks
Interactive and animation programs might contain many calls for the reexecution of the
display function.
glutPostRedisplay() – Calling this function sets a flag inside GLUT’s main loop
indicating that the display needs to be redrawn.
At the end of each execution of the main loop, GLUT uses this flag to determine if the
display function will be executed.
The function ensures that the display will be drawn only once each time the program
goes through the event loop.
Idle Callback is invoked when there are no other events to be performed.
Its typical use is to continuously generate graphical primitives when nothing else is
happening.
Idle callback : glutIdleFunc(function name)

Window Management
GLUT supports creation of multiple windows
Id = glutCreateWindow(“second window”);

To set a particular window as the current window where the image has to be rendered
glutSetWindow(id);

Source : http://elearningatria.files.wordpress.com/2013/10/cse-vi-computer-graphics-and-
visualization-10cs65-notes.pdf

You might also like