MipMapGL (2): Configurando OpenGL


      MipMapGL es mi pet project, es decir, mi proyecto personal con el que pretendo aprender.
Este proyecto en concreto pretendo crear una aplicación para MacOSX con la que controlar el robot Mip usando las flechas del teclado, mostrando en la pantalla lo que se lee del radar que tiene incorporado.
  Para ello utilizaré el lenguaje C en conjunto con las librerías de control del robot Mip MipCAPI, la librería de gráficos OpenGL y la librería de concurrencia pthreads.


  Continuamos con la configuración de la librería OpenGL desde el punto en el que lo habíamos dejado en el post anterior. En el que teníamos pendiente los siguientes puntos:
  • Inicialización de OpenGL en el método InitGL
  • La función de dibujo en la pantalla Display
  • La función de control de las flechas del teclado Teclas
  • Comunicarmos con Mip. 
  Pero antes de iniciar OpenGL vamos a hacer un poco estructuración del código, vamos a escribir todas las funciones que tienen que ver con el dibujo en la pantalla en un fichero C a parte. Para ello creamos un nuevo fichero llamado view.c  y su correspondiente cabecera view.h.

  Además se creará una cabecera general que van a compartir varios de los ficheros .c del proyecto. Se llamará main.h y a este nuevo fichero moveremos las inclusiones que tenemos en el fichero main.c. Colocaremos estas inclusiones en la estructura #ifndef [...] #define [...] #endif [...] que nos genera automáticamente XCode al crear un fichero de cabecera.



  En el archivo view.h escribiremos la cabecera de nuestra función InitGL , es decir, escribimos void InitGL(); Es importante que se incluya en este archivo la cabecera general que creamos antes.

 
 Ahora nos colocamos en el archivo view.c  y reescribimos la cabecera de la función para desarrollarla. 
  La configuración de OpenGL en este método sigue los siguientes pasos:
  1.  Establecemos el color de fondo.
  2. Determinamos el modo de la matriz que vamos a utilizar.
  3. Cargamos una matriz identidad en el motor de OpenGL, con la que empezarán los cálculos.
  4.  Determinamos el tipo de perspectiva que vamos a utilizar.
  El establecimiento del color de fondo se realiza con la función glClearColor que recibe 4 parámetros correspondientes a las componentes RGBA del color, es decir a la componentes, rojo, verde, azul y transparencia del color. En principio lo estableceremos a negro, que se corresponde con los cuatro parámetros a 0.
 
  A continuación determinamos el modo de matriz que vamos a utilizar dentro del mecanismo de OpenGL con la función glMatrixMode. Esta función recibe un único parámetro del tipo GLEnum  definido dentro de la librería de OpenGL, en este caso se le pasa el parámetro que recibe por defecto GL_MATRIXMODE.
  OpenGL realiza sus cálculos como multiplicaciones de matrices, para iniciar los cálculos necesita la matriz identidad, por ello la cargamos utilizando la función glLoadIdentity  que no recibe ningún parámetro. 
   Por último estableceremos el tipo de perspectiva que vamos a utilizar. Esto va a determinar como vamos a ver los objetos. Tenemos dos opciones la perspectiva perpendicular y la perspectiva.
 La perspectiva perpendicular muestra los objetos como su pasara un rayo de luz por cada uno de los vértices y siguen en paralelo.  Mientras que la perspectiva cónica pasa cada rayo por los vértices y los converge en el ojo del usuario.  La siguiente ilustración muestra la diferencia:


 MipMapGL  es un trabajo en dos dimensiones por lo que no será necesario utilizar una perspectiva cónica sino la perpendicular u ortográfica. 
 Teniendo claro el tipo de perpectiva tenemos que configurar el espacio de trabajo en el que vamos a dibujar los objetos. El espacio de trabajo se configura con los parámetros de espacio hacia la izquierda, la derecha, hacia abajo, hacia arriba, la distancia de cerca y la distancia de lejos. 
  Si queremos configurar el espacio de trabajo como un espacio cúbico de 1 unidad tenemos que pasarle los siguientes valores como parámetros:

 Con esto ya está configurado OpenGL para comenzar a dibujar en él. Pero seguiremos con el dibujo en el próximo post, la semana que viene. Recordad seguir este blog en el botón "Seguir" que tenéis a la derecha ;)

EDICIÓN: Ya tenéis disponible el proyecto configurado el proyecto hasta este punto en el siguiente enlace: https://goo.gl/281XDj

1 comentario:

  1. me ha dejado con muchas ganas de ver como se hace el dibujo, espero con impaciencia tu próximo artículo.

    ResponderEliminar