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.
-
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!