Aula Macedonia


Curso de Programación Gráfica en OpenGL


Artículo realizado por
Oscar García "Kokopus".





Capítulo 1.
Presentación del curso de OpenGL

Bueno para empezar supongo que debería presentarme.
Me llamo Oscar García y soy ingeniero superior electrónico y técnico en telecomunicaciones.
Estoy integrado en el Citem de La Salle Bonanova en Barcelona. En este centro tratamos de investigar al máximo las posibilidades de la Multimedia y, cómo no, de la Realidad Virtual. Para ello tratamos de explotar al máximo diversos frentes y entre ellos esta mi preferido: ¡los gráficos!
Ahora que ya teneis una idea más clara de quién soy vamos al grano con lo que nos ocupa, es decir, con el curso de OpenGL.

OpenGL es una libreria gráfica escrita originalmente en C que permite la manipulación de gráficos 3D a todos los niveles. Esta librería se concibió para programar en máquinas nativas Silicon Graphics bajo el nombre de GL (Graphics Library). Posteriormente se consideró la posibilidad de extenderla a cualquier tipo de plataforma y asegurar así su portabilidad y extensibilidad de uso con lo que se llegó al término Open Graphics Library, es decir, OpenGL.

La libreria se ejecuta a la par con nuestro programa independientemente de la capacidad gráfica de la máquina que usamos. Esto significa que la ejecución se dará por software a no ser que contemos con hardware gráfico específico en nuestra máquina. Si contamos con tarjetas aceleradoras de vídeo, tecnología MMX, aceleradoras 3D, pipelines gráficos implementados en placa, etc ... por supuesto gozaremos de una ejecución muchísimo más rápida en tiempo real.

Desgraciadamente esto ya queda relevado a tus capacidades ecónomicas en el momento de escoger qué ordenador compras y con qué le dotas.

Así esta librería puede usarse bajo todo tipo de sistemas operativos e incluso usando una gran variedad de lenguajes de programación. Podemos encontrar variantes de OpenGL para Windows 95/NT, Unix, Linux, Iris, Solaris, Java e incluso Visual Basic segun se anuncia ultimamente.
Por supuesto su uso mas extenso suele ser el de la pura y dura programación en C que tanto nos gusta a los integrantes de este mundillo.

Si habéis intentado programar gráficos 3D en alguna ocasión, os daréis cuenta rápidamente de lo poderosa que llega a ser esta herramienta. Nos facilitara mucho la interpretación de toda la geometría y óptica asociada a este mundo pero no os preocupéis que es algo serio y por tanto también tendremos que "comernos el coco" en mas de una ocasión.

Por supuesto no podemos desligar el mundo de los gráficos de OpenGL y por tanto intentare que este sea un curso de "gráficos usando OpenGL", mas que una larga mención de funciones y constantes integradas en esta librería.

Trabajaremos con C y por tanto me referiré siempre a ejemplos codificados según este lenguaje. Simplemente necesitareis las librerías que os iré comentando y un compilador cualquiera de Ansi C, es decir, el estándar de este lenguaje desde sus orígenes allá por la época de 2001:Odisea Espacial...

Por cierto los términos en ingles son prácticamente inevitables así que espero que tengáis una ligera idea del idioma. Prácticamente toda la documentación relativa a esta librería esta escrita en "anglosajón" y por tanto no podemos dejarlo de lado. No obstante tranquilos/as porque todo lo que mencione lo explicare y detallare para que os sea muy fácil entender todos los conceptos.

Algo de álgebra lineal también nos hará falta para entender QUE es lo que ocurre internamente y como podemos operar con nuestra geometría para lograr los efectos deseados.....me ocupare de proporcionaros las herramientas necesarias en este sentido sin que el curso este excesivamente repleto de matemáticas.

Bueno aquí tenéis los contenidos del curso para que os hagáis un poco a la idea...os aseguro que es realmente muy completo y os permitirá crear "casi" infinitamente...:
 
 

  • Conceptos prévios.
    • Sistemas gráficos. Dispositivos y elementos.
    • El modelo "cámara sintética".
    • Arquitecturas gráficas.
    • Primeros comandos.
  • Programación gráfica.
    • Uso de funciones gráficas en OpenGL.
    • La interficie OpenGL.
    • Primitivas y atributos. Polígonos. Texto. Color.
    • Visionado de gráficos. Matrices.
    • Sistema de ventanas (GLUT).
    • Función MAIN en un programa OpenGL.
     
  • Interacción. Dispositivos de entrada.
    • Arquitectura Cliente-Servidor.
    • "Display lists" en OpenGL.
    • Programación guiada por eventos.
    • Menús.
    • Doble buffer.
     
  • Objetos geométricos y sus Transformaciones.
    • Algebra afín.
      • Vectores y escalares.
      • Líneas. Planos.
      • Convexidad.
      • Operaciones entre primitivas.
      • Sistemas de coordenadas.
      • Coordenadas homogeneas.
    • Estructuras de datos.
    • Transformaciones geométricas.
      • Traslación.
      • Rotación.
      • Escalado.
      • Deformación.
      • Concatenación de transformaciones.
      • Implementación.
  • Visionado.
    • Proyecciones.
    • La cámara en OpenGL.
    • Eliminación de superficies ocultas.
    • Matrices de proyección en OpenGL.
     
  • Sombreado.
    • Fuentes de luz.
    • Reflexiones.
    • Sombreado de polígonos.
    • Materiales.
    • "Antialiasing".Modelos.
     
  • Modelos geométricos.
    • Modelos jerárquicos.
    • Arboles.
    • Métodos recursivos.
    • Fractales.
    • Sistemas de particulas.
     
  • Curvas y superficies.
    • Representación.
    • Curvas paramétricas.
    • Curvas de "Hermite".
    • Curvas de "Bezier".
    • "B-Splines".
    • Superficies algebráicas.
     
  • Mapeado de texturas.
    • Texturas.
    • Mapas.
    • Operaciones a nivel de bit/pixel.
    • Composición de imagen.


Bueno...¿qué os parece?...tampoco os pongáis a temblar ahora que aunque parece que "ladra" mucho no "muerde"....lo iremos viendo poco a poco y además intentaré que tengáis el máximo número posible de ejemplos a mano para compilar y probar.

¡Nos vemos en el primer capitulo!




AULA MACEDONIA
a
MACEDONIA Magazine