Infografía I: Práctica 1. OpenGL y primitivas
Última actualización 30/04/2010Esta práctica pretende ser una toma de contacto con el entorno de trabajo de la asignatura.
El alumno aprenderá a compilar con el framework de la asignatura usando librerias externas tales como OpenGL y deberá pintar una escena 2D usando dichas primitivas.
Material
- Slides introducción a OpenGL
- Slides sobre cómo compilar con librerias externas
- Slides sobre cómo compilar con Visual Studio 2005
- Framework de la práctica 1
Requisitos
Como ejercicio los alumnos deberan programar una aplicacion que pinte una escena en pantalla usando las primitivas básicas explicadas.
- Codigo en C o C++ de un dibujo original:
- Utilizar al menos 3 primitivas distintas de OpenGL y pintarlas a la vez.
- Encapsular diferentes partes del dibujo de la escena en funciones separadas.
- Utilizar bucles (for, while, etc) para realizar cosas procedurales.
- Permitir cierta interactividad por parte del usuario (una tecla para cambiar algo de la escena).
- Opcional
- Que aparezca un círculo (para ello tendreis que definir los vertices usando las funciones trigonométricas sin y cos).
- Animación (que la escena vaya cambiando aunque el usuario no haga nada, p.e., desplazando objetos)
- Se valorará la creatividad y el uso inteligente del código, no la capacidad artistica basada en añadir a mano cientos de puntos.
- Podeis incluir en el zip de la entrega un screenshot de vuestra aplicación si estais lo suficientemente orgullosos de vuestro trabajo como para que lo vean otros.
Fallos comunes
- No crear un proyecto Win32 de consola, o no elegir la opcion Proyecto Vacio. Esto puede dar errores extraños al ejecutar la aplicación como problemas con los precompiled headers o que no tenga la macro WIN32 definida en la configuracion del proyecto.
- Usar funciones kilometricas con cientos de vertices puestos a mano.
- glBegins sin cerrar.
- Renderizar fuera del bucle de render. Lo que se hace despues del swapbuffers ya no se verá.
- Demasiados Swapbuffers, solo debe haber uno, al final del bucle de render.
- Circulos con mas vertices de los necesarios, acotar el iterador para que solo se pinte una vuelta.
- Dividir por enteros esperando resultados decimales. Recordad, en C: 1/2 == 0 pero 1/2.0 == 0.5
- incluir glut.h en lugar de GL/glut.h
Ejemplos
Valor: 6 puntos