Infografía I: Práctica 1. OpenGL y primitivas - Javi Agenjo at UPF

Infografía I: Práctica 1. OpenGL y primitivas

Última actualización 30/04/2010

Esta 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

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