Previo 4.- Escenas y manejo de eventos
1. ¿Qué es una escena?
Es el conjunto de luces, cámaras, atributos y modelos asociados a un ambiente 3D.
2. ¿Cómo podemos definir cada escena jerárquicamente?
Es necesario ordenar los elementos de manera lógica por medio de la técnica grafo de escena. Se define la relación que existe entre varios objetos y se emplean transformaciones en común.
3. Describa el funcionamiento y parámetros de las siguientes funciones:
void glutSwapBuffers(void);
Los comandos son asignados al buffer secundario hasta que llamamos a esta función para que glut tome el contenido de dicho buffer lo pase al primario para dibujar.
void glutKeyboardFunc(void (*func)(unsigned char key, int x, int y));
Funcion que maneja los eventos del teclado para ASCII, sinembargo no toma los caracteres especiales.
void glutIdleFunc(void (*func)(void));
Esta function se llama automaticamente cuando detecta que el procesador no esta trabajando para hacer tareas en segundo plano.
4. ¿Qué es un double buffer? ¿Para que sirve?
Al tenerte una memoria secundaria de nuestra escena evitamos perdida en el refresco de pantalla. De esto se encarga el doublé buffer, en tener una copia de nuestra escena completa.
5. ¿Qué es una función callback (llamada a función)?
Es una función que se llama a si misma reiteradamente cuando detecta una entrada o la mandamos llamar para esperar un evento.
6. Escriba código que detecte un evento
void mouse (int button, int state, int x, int y){
switch (button){ //Left Button Clicked
case GLUT_LEFT_BUTTON:
switch (state){
case GLUT_DOWN: //Pressed
Ang=Ang+5;
mx=0;
my=1;
mz=0;
break;
case GLUT_UP:// Released
Ang=Ang+5;
mx=0;
my=1;
mz=0;
break;
}
break;
case GLUT_MIDDLE_BUTTON:// Middle Button clicked
switch (state){
case GLUT_DOWN:// Pressed
printf ("Mouse Middle Button Pressed (Down)...\n");
break;
case GLUT_UP:// Released
printf ("Mouse Middle Button Released (Up)...\n");
break;
}
break;
case GLUT_RIGHT_BUTTON:// Right Button Clicked
switch (state){
case GLUT_DOWN: // Pressed
Ang=Ang-5;
mx=0;
my=1;
mz=0;
break;
case GLUT_UP: // Released
Ang=Ang-5;
mx=0;
my=1;
mz=0;
break;
}
break;
}
glutPostRedisplay ();
}
void keyboard(unsigned char key, int x, int y){
switch (key) {
case 27:
exit(0);
break;
case 88:
case 120:
Ang=Ang+15;
mx=1;
my=0;
mz=0;
break;
case 89:
case 121:
Ang=Ang+15;
mx=0;
my=1;
mz=0;
break;
case 90:
case 122:
Ang=Ang+15;
mx=0;
my=0;
mz=1;
break;
case 66:
case 98:
cr=0;
cg=0;
cb=255;
bandera=1;
break;
case 71:
case 103:
cr=0;
cg=255;
cb=0;
bandera=1;
break;
case 82:
case 114:
cr=255;
cg=0;
cb=0;
bandera=1;
break;
case 48:
pinta=0;
break;
case 49:
pinta=1;
break;
case 50:
pinta=2;
break;
case 51:
pinta=3;
break;
case 52:
pinta=4;
break;
case 53:
pinta=5;
break;
case 54:
pinta=6;
break;
case 55:
pinta=7;
break;
case 56:
pinta=8;
break;
case 57:
pinta=9;
break;
}
glutPostRedisplay ();
}


No hay comentarios:
Publicar un comentario