practica4 - WordPress.com
Transcripción
practica4 - WordPress.com
Universidad Nacional Autónoma de México Facultad de Ingeniería Laboratorio de Computación Gráfica Profra.: Elizabeth Fonseca Chávez Práctica 4 Doble Buffer de Animación Alumno: Sánchez Sotelo Emmanuel Grupo 4 Practica 4 Doble Buffer de Animación Objetivos -Preparar una ventana Windows para su uso con OpenGL. -Repasar el uso de la tubería geométrica de OpenGL. -Aprender a utilizar el doble buffer para realizar animaciones. Cuestionario Previo 1.-Investigue y reporte cúales búferes se implementan en OpenGL y que función tienen. Esto es investigue el a)frame buffer o búfer de color, tanto frontal como posterior. El búfer de color almacena el color de cada pixel en el cuadro actual. Este es el búfer que se ve. El color esta en RGBA, los primeros tres componentes estan considerados el color del pixel mientras que el A(Alpha) es la opacidad o transaparencia del pixel. Este búfer puede funcionar en conjunto con el búfer de Acumulación. b)depth buffer o búfer de profundidad El búfer de profundidad contiene la profundidad de cada pixel del cuadro, tambien es llamado búfer z. Esta asociado con la prueba de profundidad. Para cada pixel dibujado la prueba de profundidad compara la profundidad actual almacenada con la profundidad del nuevo pixel. Dependiendo del rsultado de la prueba el pixel es dibujado o no. c)Stencil buffer El Stencil buffer puede ser utilizado para restringir el area de dibujo. Almacena el valor asociado de cada pixel. Se aplica un valor a un area de pixeles y posteriormente se dibuja solo sobre los pixeles con ese valor. 2.-Investigue y reporte como se hace una secuencia animada de caricaturas. Una secuencia animada se basa en el hecho de que al presentar una serie de escenas en pequeño lapso de tiempo con pequeños cambios entre ellas da la sensación de movimiento, de tal manera que al poner mas y mas escenas se llega a la percepción de un movimiento fluido. 3-Investigue y reporte que hace la función glutDisplayFunc(). La función glutDisplayFunc realiza la llamada a la ventana actual, cuando GLUT determina que el plano normal de la ventana debe ser redibujado. 4-Investigue y reporte que hace la función glutIdleFunc(). Permite que un programa GLUT realice tareas de procesamiento en background o continua una animación cuando no es recibido ningun evento de sistema. 5-Investigue y reporte que hace la función glutMainLoop(). Se encarga de pasar el control de flujo del programa a la GLUT a modo de que cada vez que ocurra un evento sean llamadas las funciones definidas como callbacks hasta que la ventana se cierre. Desarrollo En el primer ejercicio de esta práctica podemos verificar el movimiento animado de dos cubos: Posteriormente permitimos el movimiento de la camara Realizamos ahora una esfera que se mueva de izquierda a derecha, unicamente modificando el código para el segundo cuadro y montandolo un poco mas arriba glMatrixMode(GL_MODELVIEW); //Mover cubo glPushMatrix(); glTranslatef(2,angle*0.005,0); glRotatef(-angle,1.0,0.0,0.0); glCallList(2); glPopMatrix(); O de la misma forma una esfera que se mueva de abajo hacia arriba. Conclusiones En esta práctica se pudo verificar como a través de un ciclo que se mantiene, y una pantalla que se actualiza con una nueva matriz podemos darle a una figura estática una apariencia de estarse moviendo al realizar diversas escenas con ligeros cambios. De igual forma nos permite verificar el funcionamiento del doble buffer para la realización de estas animaciones.