martes, 18 de septiembre de 2007

Previo Práctica 5

1. Escriba una aplicación que usando la libreria GLUT detecte que se ha realizado un click con el boton derecho
del mouse sobre la ventana principal e imprima las coordenadas del mouse en la salida estandar.
Cuando se haga click con el botón izquierdo, cierra la aplicación.
Nota: Usar glutMouseFunc().

#include
#include

void init()
{
glClearColor(0,0,0,0);
glEnable(GL_DEPTH_TEST);

}


void reshape(int width, int height)
{
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0f, (GLfloat)width/(GLfloat)height, 1.0f, 20.0f);

glMatrixMode(GL_MODELVIEW);
}

void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1,0,0);
glLoadIdentity();


glFlush();

glutSwapBuffers();


}

void idle()
{
display();
}


void keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case 27: //esc
exit(0);
break;
}

}

void processMouse(int boton, int estado, int x, int y)
{
switch (boton)
{
case GLUT_LEFT_BUTTON:
switch (estado)
{
case GLUT_DOWN:
exit(0);
break;
}

break;

case GLUT_RIGHT_BUTTON:
switch (estado)
{
case GLUT_DOWN:
printf("Posicion X: %d \nPosicion Y: %d \n\n",x,y);
break;

}
break;
}

}


int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(300, 200);
glutCreateWindow("Utilización del ratón");

init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(idle);

glutMouseFunc(processMouse);

glutMainLoop();

return 0;
}

2. Escriba una aplicación que cada 5 segundos abra una ventana y como titulo le ponga el tiempo en el que se creó.
Al apretar el boton izquierdo del mouse para el contador.
Al apretar el boton derecho del mouse reinicia el contador.
Al apretar la tecla "ESC" cierra la alicación.
NOta: Usar glutTimerFunc, glutMouseFunc, glutKeyboardFunc.

#include

#include


// Variables globales auxiliares.

int titulo=1;
int contador=0;
int stop=0;
char cadena [50];

void init()
{
glClearColor(0,0,0,0);
glEnable(GL_DEPTH_TEST);

}


void reshape(int width, int height)
{
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0f, (GLfloat)width/(GLfloat)height, 1.0f, 20.0f);

glMatrixMode(GL_MODELVIEW);
}

void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1,0,0);
glLoadIdentity();

glFlush();

glutSwapBuffers();
}

void idle()
{
display();
}


void keyboard(unsigned char key, int x, int y)
{
switch (key)
{
case 27:
exit(0);
break;
}

}

void processMouse(int boton, int estado, int x, int y)
{
switch (boton)
{
case GLUT_LEFT_BUTTON:
switch (estado)
{
case GLUT_DOWN:
stop=1;
break;
}
break;

case GLUT_RIGHT_BUTTON:
switch (estado)
{
case GLUT_DOWN:
contador=0;
stop=0;
break;
}
break;
}
glutPostRedisplay ();
}

void TimerFunction()
{
if (stop==1)
{

}

else
{
contador=contador+5000;
glutInitWindowPosition(200,200);
glutReshapeFunc(reshape);
glutCreateWindow(itoa(contador,cadena,10));
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMouseFunc(processMouse);
glutKeyboardFunc(keyboard);
}

glutTimerFunc(5000, TimerFunction, 28317);
}

int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(300, 200);
glutCreateWindow("0");

init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(idle);

glutMouseFunc(processMouse);

glutKeyboardFunc(keyboard);

glutTimerFunc(5000, TimerFunction, 28317);

glutMainLoop();

return 0;
}



3. ¿Que comandos para manejo de cuentos nos proporciona GLUT?
Describa cada uno de éstos
glut____Func().
  • void glutButtonBoxFunc (void (*func)(int button, int state)): el glutButtonBoxFunc fija el servicio repetido del botón de la caja del dial y del botón para la ventana actual.
  • void glutDialsFunc (void (*func)(int dial, int value)): el glutDialsFunc fija el servicio repetido de los diales de la caja del dial y del botón para la ventana actual.
  • void glutDisplayFunc (void (*func)(void)): el glutDisplayFunc fija el servicio repetido de la exhibición para la ventana actual.
  • void glutEntryFunc (void (*func)(int state)) el glutEntryFunc fija el ratón entra/el servicio repetido de la licencia para la ventana actual.
  • void glutIdleFunc (void (*func)(void)) el glutIdleFunc fija el servicio repetido ocioso global.
  • void glutKeyboardFunc (void (*func)(unsigned char key, int x, int y)) el glutKeyboardFunc fija el servicio repetido del teclado para la ventana actual.
  • void glutMenuStatusFunc (void (*func)(int status, int x, int y)) fija el servicio repetido global del estado del menú. glutMenuStatusFunc.
  • void glutMotionFunc (void (*func)(int x, int y)) :el glutMotionFunc y el glutPassiveMotionFunc fijaron el movimiento y los servicios repetidos pasivos del movimiento respectivamente para la ventana actual.
  • void glutMouseFunc (void (*func)(int button, int state, int x, int y)) el glutMouseFunc fija el servicio repetido del ratón para la ventana actual.
  • void glutOverlayDisplayFunc (void (*func)(void)): el glutOverlayDisplayFunc fija el servicio repetido de la exhibición del recubrimiento para la ventana actual.
  • void glutReshapeFunc (void (*func)(int width, int height)): el glutReshapeFunc fija el servicio repetido de la nueva formación para la ventana actual.
  • void glutSpaceballButtonFunc (void (*func)(int button, int state)): el glutSpaceballButtonFunc fija el servicio repetido del botón de Spaceball para la ventana actual.
  • void glutSpaceballMotionFunc (void (*func)(int x, int y, int z)): el glutSpaceballMotionFunc fija el servicio repetido del movimiento de Spaceball para la ventana actual.
  • void glutSpaceballRotateFunc (void (*func)(int x, int y, int z)):el glutSpaceballRotateFunc fija el servicio repetido de la rotación de Spaceball para la ventana actual.
  • void glutSpecialFunc (void (*func)(int key, int x, int y)):el glutSpecialFunc fija el servicio repetido especial del teclado para la ventana actual.
  • void glutTabletButtonFunc (void (*func)(int button, int state, int x, int y)): el glutTabletButtonFunc fija el servicio repetido especial del teclado para la ventana actual.
  • void glutTabletMotionFunc (void (*func)(int x, int y)): el glutTabletMotionFunc fija el servicio repetido especial del teclado para la ventana actual.
  • void glutTimerFunc (unsigned int msecs, void (*func)(int value), value): el glutTimerFunc coloca un servicio repetido del contador de tiempo que se accionará en un número especificado de
  • milisegundos.
  • void glutVisibilityFunc (void (*func)(int state)): glutVisibilityFunc dispone la función de visibilidad dentro de la ventana actual. Esta función es llamada cuando la visibilidad en una ventana ha cambiado. El parámetro estado puede ser GLUT_NOT_VISIBLE o GLUT_VISIBLE dependiendo en la la visibilidad actual de la ventana.


No hay comentarios: