MipMapGL (1) preparando el proyecto con 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.
 
   En este primer post voy a mostrar como se configura un proyecto en XCode para que muestre una ventana vacía.
        Abrimos XCode y creamos un nuevo proyecto. Este nuevo proyecto será para OSX y del tipo Command Line Tool.
    Le ponemos el nombre del proyecto, en este caso "MipMapGL" y le indicamos que vamos a utilizar C.
    Ahora añadiremos las librerías OpenGL, para dibujar y GLUT que nos permitirá recibir los eventos de pulsación de las teclas. Para ello nos dirigimos a la sección de Build Phases.
 En la sección de "Link Binary with Libraries" hacemos clic en el botón con el símbolo "+" y en el nuevo menú que se nos abre escribimos OpenGL. Seleccionamos "OpenGL.framework"
 Repetimos el proceso con GLUT.
Ahora que tenemos las dos librerías enlazadas, llega la hora de ponerse a picar código.
    Hacemos clic encima del fichero que se nos creó automáticamente con el proyecto "main.c". En este fichero tenemos ya una función "main" que muestra el mensaje "hello world" escrito por defecto. Lo que haremos es quitarlo para introducir nuestro código.
   Los programas de OpenGL tienen una receta específica que se sigue en todos los casos y que consiste en la siguiente lista de pasos:
  1. Enlazaremos con las librerías que hemos añadido antes poniendo fuera de la función main el siguiente texto  "#include <stdio.h>
    #include <OpenGL/OpenGL.h>
    #include <GLUT/GLUT.h>"
  2. Inicio del contexto gráfico con la función glutInit al que le pasaremos como argumentos &argc,argv. Estos son los parámetros que nos vienen dados por la línea de comandos. Existen un conjunto de parámetros de línea de comandos que OpenGL ya reconoce, pero en este caso no se le está pasando nada así que creará un contexto por defecto sobre el que trabajaremos.
  3. Inicio de la ventana indicando en que posición de la pantalla se colocará con glutInitWindowPosition(posicionEnX,posicionEnY)  y el tamaño de la ventana con glutInitWindowSize(ancho,alto).
  4.  Inicio de las zonas de memoria reservadas para cálculo, también conocidas como buffer con la función glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE|GLUT_DEPTH). Dejaremos estos valores por ahora y los explicaré en un post siguiente.
  5. Creación de la ventana con un título haciendo uso de la función glutCreateWindow("Titulo")
  6. Inicio de los parámetros de OpenGL con una función que desarrollaremos llamada InitGL.
  7. Estableceremos la función que controla lo que se muestra en la pantalla con glutDisplayFunc.
  8. Indicaremos la función que responderá ante las flechas del teclado glutSpecialFunc
  9. Iniciaremos el bucle de dibujo de OpenGL con la función glutMainLoop. 
Con todo esto nuestro programita tendrá la siguiente forma:
(Para descargar el código id al siguiente enlace)

El desarrollo de las funciones Display, Teclas y un error que aún no conocéis que existe en la próxima parte ;).
No olvidéis de seguir este sitio haciendo clic en el botón de la derecha. :)

1 comentario:

  1. Un artículo muy interesante y muy bien explicado. Espero futuros avances de tu proyecto!!

    ResponderEliminar