1 / 44

Curso Computación Gráfica y OpenGL

Curso Computación Gráfica y OpenGL. Impartido por Ernesto Espinosa Ponce Intersemestre 2008-1 – 2008-2 IEEE UNAM. Experiencia. Egresando de la primera generación del módulo de Computación Gráfica Experiencia de 2 años en el desarrollo de gráficos

Télécharger la présentation

Curso Computación Gráfica y OpenGL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curso Computación Gráfica y OpenGL Impartido por Ernesto Espinosa Ponce Intersemestre 2008-1 – 2008-2 IEEE UNAM Curso OpenGL IEEE, Espinosa Ponce Ernesto

  2. Experiencia • Egresando de la primera generación del módulo de Computación Gráfica • Experiencia de 2 años en el desarrollo de gráficos • Materias acreditadas: Computación Gráfica, Computación Gráfica Avanzada, CAD, Procesamiento Digital de Imágenes, Diseño de Interfaces, Multimedia y Realidad Virtual • Experiencia en el desarrollo de Gráficos con OpeGL tanto bajo plataforma Windows como Linux Curso OpenGL IEEE, Espinosa Ponce Ernesto

  3. Proyectos • LIMN, Proyecto Jurasic Plant • Proyecto NXR, Modelneitor • Participación en Simulador Virtual de Operaciones de Próstata en el CCADET • Proyecto 3DLoader • Proyecto CuacraftGraphicClient • Proyecto Mictlan Engine • Desarrollo de tesis en visualización 3D de agua fluyendo Curso OpenGL IEEE, Espinosa Ponce Ernesto

  4. Presentación de alumnos • Nombre, Semestre, Carrera • Motivo por el cual ha decidido tomar el curso • Módulo si es que lo ha elegido o cual piensa elegir • Área de interés dentro de las gráficas por computadora • Lenguajes de programación que maneja • Ha realizado desarrollo de interfaces gráficas, con qué API • Qué nivel considera tener dentro del lenguaje C • Cuáles son los resultados que espera tener al terminar este curso Curso OpenGL IEEE, Espinosa Ponce Ernesto

  5. Capítulo I Introducción a OpenGL Curso OpenGL IEEE, Espinosa Ponce Ernesto

  6. Tema 1 Qué es OpenGL Orígenes de la Biblioteca Curso OpenGL IEEE, Espinosa Ponce Ernesto

  7. ¿Qué es OpenGL? • OpenGL es una biblioteca para el desarrollo de gráficos por computadora en 2D y 3D multiplataforma (Linux, Windows, Unix, MacOS, PS3) • Su nombre proviene de Open Graphics Library • Es una especificación que define una API (del inglés Application Programming Interface - Interfaz de Programación de Aplicaciones) para la programación de gráficos en varios lenguajes Curso OpenGL IEEE, Espinosa Ponce Ernesto

  8. Orígenes de OpenGL • Inicio de la computación gráfica: Ivan Sutherland (50’s -60’s) Sketchpad • Simuladores de Vuelo • Implementaciones en ensamblador • Surgen las primeras bibliotecas de gráficos(PHIGS) • OpenGL fue creada en 1992 por Silicon Graphics Inc. , su antecesora se llamaba IRIS GL Curso OpenGL IEEE, Espinosa Ponce Ernesto

  9. Historia de OpenGL • IRIS GL su antecesora contenía elementos y funciones para manejo de Ventanas, Ratón y Teclado que hacían tener problemas para un esquema de licenciamiento abierto • Se buscó emtonces eliminar funciones no reelevantes para gráficos, estandarizar el acceso al hardware • Se crea el OpenGL Architecture Review Board(1992) • En 1994 se trabaja en OpenGL++ pero nunca salió a la luz pública • 1995 Microsoft lanza Direct3D Curso OpenGL IEEE, Espinosa Ponce Ernesto

  10. Un poco de más historia • En 1997 surge el proyecto Farenheit para estandarizar y unificar Direct3D y OpenGL • 1998 HP apoya el proyecto • 1999 SGI se queda solo • 2006 OpenGL pasa al Grupo Khronos • Se creó el OpenGL ARB Working Group Curso OpenGL IEEE, Espinosa Ponce Ernesto

  11. Documentación disponible • El Libro Rojo - The Red Book: The OpenGL Programmer's guide. • Libro de referencia y tutorial. Considerado libro de cabecera para programadores de OpenGL. • El Libro Azul - The Blue Book: The OpenGL Reference manual. • En esencia, una copia de la páginas del man de OpenGL. • Incluye un poster desplegable con el diagrama de la estructura de una implementación ideal de OpenGL. Curso OpenGL IEEE, Espinosa Ponce Ernesto

  12. Más documentación • El Libro Naranja - The Orange Book: The OpenGL Shading Language. • Libro de referencia y tutorial para GSLS (Lenguaje de Shaders de OpenGL) Curso OpenGL IEEE, Espinosa Ponce Ernesto

  13. Tema 2 Características de la Biblioteca Curso OpenGL IEEE, Espinosa Ponce Ernesto

  14. Características de OpenGL • Objetivos • Ocultar complejidad de Hardware • Ocultar las capacidades del Hardware • Propósito: Dibujado (puntos, líneas, polígonos) • OpenGL como una Máquina de Estados , prefiero llamarlos Switches Curso OpenGL IEEE, Espinosa Ponce Ernesto

  15. Características de OpenGL • Creada para tener la mejor calidad posible en gráficos, lo cual depende en gran medida del Hardware • Da gran libertad para crear gráficos pero requiere de conocimientos de computación gráfica • Manejo de un pipeline gráfico Curso OpenGL IEEE, Espinosa Ponce Ernesto

  16. Pipeline Gráfico • Es el proceso mediante el cual las abstracciones de un Espacio de Objetos (vectores, vértices, muchas matemáticas) pasan a ser elementos de un Espacio de Dispositivo (que generalmente son píxeles) • Para lograrlo se aplican una serie de pasos secuenciales que realizan transformaciones, algoritmos , cosideraciones etc • Se dice que el espacio objeto es n dimensional y el de dispositivo 2D Curso OpenGL IEEE, Espinosa Ponce Ernesto

  17. Es decir… Curso OpenGL IEEE, Espinosa Ponce Ernesto

  18. Pipeline de OpenGL Curso OpenGL IEEE, Espinosa Ponce Ernesto

  19. En conclusión: OpenGL tiene • Funciones para dibujar en 2D y 3D • Transformaciones • Algoritmos de iluminación • Z-Buffering • Mapeo de Texturas • Soporte para Shaders • Blending, elementos de antialiasing , efectos de Fog Curso OpenGL IEEE, Espinosa Ponce Ernesto

  20. Y OpenGL no tiene • Funciones para manejar ventanas, eventos de ratón o teclado  • Funciones o procedimientos para crear un objeto completo a partir de una descripción natural ejemplo: comando dibuja_llanta_de_un_camión • Soporte nativo para dibujado de curvas • Soporte nativo para audio y/o texto • Detección de colisiones • Carga de imágenes Curso OpenGL IEEE, Espinosa Ponce Ernesto

  21. Tema 3 Usos, aplicaciones y alcances de la biblioteca Curso OpenGL IEEE, Espinosa Ponce Ernesto

  22. Usos OpenGL se ha utilizado en los siguientes campos de la computación que requieren de desarrollo de gráficos: • CAD • Realidad Virtual • Representación científica • Visualización de Información • Simuladores • Desarrollo de videojuegos  (Soportada en PS3) Curso OpenGL IEEE, Espinosa Ponce Ernesto

  23. Aplicaciones • Simuladores de vuelo militares ( EU) • Simuladores de operaciones de tejido (En Europa principalmente) • Desarrollo de videojuegos como GLQuake de IdSoftware • Programas de diseño (3D Max) • Desarrollo de Game Engines • Programas de simulación en general, CAD y CAM, etc Curso OpenGL IEEE, Espinosa Ponce Ernesto

  24. Alcances de la biblioteca • La competencia : Direct3D • OpenGL fue diseñada para la calidad • Direct3D incluye emulación por software • Es un estándar de la industria • Soportada en muchas plataformas • Escalable y estable • Fácil de usar • Bien documentada Curso OpenGL IEEE, Espinosa Ponce Ernesto

  25. Qué más ofrece • Extensiones : Capacidades extras que ofrecen los vendedores de hardware • Revisada constantemente • De licencia abierta • Libertad para intervenir el pipeline mediante shaders • Libertad de generar algoritmos para crear cosas no incluidas en la biblioteca Curso OpenGL IEEE, Espinosa Ponce Ernesto

  26. Tema 4 Ejemplos de aplicaciones Curso OpenGL IEEE, Espinosa Ponce Ernesto

  27. Ejemplos • Piston • Mano básica • Mano iluminada • LIMN • Curvas Paramétricas • Voxelización • 3DLoader • PathFinder Curso OpenGL IEEE, Espinosa Ponce Ernesto

  28. Mas ejemplos • Demo modelneitor con código fuente • Frets on Fire Curso OpenGL IEEE, Espinosa Ponce Ernesto

  29. Tema 5 Generalidades de la programación bajo OpenGL Curso OpenGL IEEE, Espinosa Ponce Ernesto

  30. Elementos necesarios • Biblioteca OpenGL • Archivos de cabecera • Archivos obj o lib • En DevC++ existen los devpacks • Verificar el soporte dentro de la plataforma elegida y bibliotecas para su ejecución • Estructura de directorios estándar para OpenGL • Biblioteca auxiliar GLU (GL Utilities) Curso OpenGL IEEE, Espinosa Ponce Ernesto

  31. Qué pasa con lo que no tiene • Y las ventanas , mouse, teclado???? • GLUT GL Utility Toolkit • API de Win32 • Imágenes • SDL Image • Devil • Sonido • SDL Mixer • OpenAL Curso OpenGL IEEE, Espinosa Ponce Ernesto

  32. Y en linux?? • Implementación libre Mesa3D • Biblioteca “like” OpenGL • Generalmente puede descargarse en paquetes para su programación • Tampoco contiene elementos para manejo de ventanas • Opciones GTK, SDL, GLUT, FreeGLUT, OpenGLUT Curso OpenGL IEEE, Espinosa Ponce Ernesto

  33. Como funciona?? HARDWARE Curso OpenGL IEEE, Espinosa Ponce Ernesto

  34. Sintaxis Básica • OpenGL contiene 3 elementos distintos básicos. • Funciones • Constantes • Tipos de datos Curso OpenGL IEEE, Espinosa Ponce Ernesto

  35. Funciones • Usos • Dibujado de elementos • Manipulación de proyecciones • Transformaciones Geométricas • Habilitación / Deshabilitación de “switches” • Texturizado • Aplicación de elementos para lograr iluminación • Cuenta con 150 funciones básicas Curso OpenGL IEEE, Espinosa Ponce Ernesto

  36. Sintaxis de funciones • Se anteponen gl si pertenecen a la biblioteca OpenGL, glu o glut si son de éstas respectivamente • Contienen información al final de cuántos parámetros reciben y cuál es su tipo • Ejemplos: • glVertex3f • glVertex3fv • glVertex3i Curso OpenGL IEEE, Espinosa Ponce Ernesto

  37. Tipos de datos • Evitan problemas de implementación en compiladores donde el tamaño de los tipos de datos son diferentes a los estándares • Se recomienda su uso para asegurar el rendimiento de una aplicación más no es necesario u obligatorio • Inician con GL Curso OpenGL IEEE, Espinosa Ponce Ernesto

  38. Curso OpenGL IEEE, Espinosa Ponce Ernesto

  39. Constantes • Usos • Activar o desactivar ciertas propiedades de dibujado o switches • Dar ciertos valores a parámetros de funciones que configuran algún elemento • Todos van con mayúsculas empezando con GL y generalmente tienen _ cuando presentan espacios, ya que sus nombres son muy descriptivos acerca de para que sirven Curso OpenGL IEEE, Espinosa Ponce Ernesto

  40. Constantes • Ej. • GL_LIGHTING • GL_COLOR_BUFFER_BIT • GL_LINES • También las encontramos en GLUT Ej. • GLUT_LEFT_BUTTON Curso OpenGL IEEE, Espinosa Ponce Ernesto

  41. ¿Qué más necesito? • Conocer elementos de computación gráfica • Buen nivel de programación básica en C • Conocer qué es lo que está haciendo por dentro el CPU para dar mayor rendimiento o por lo menos tener nociones • Manejo de estructuras de datos en un buen nivel • Ingenio, dedicación y desarrollos de proyectos personales, tiempo Curso OpenGL IEEE, Espinosa Ponce Ernesto

  42. Recomendaciones y consideraciones • Tamaño en memoria • Rapidez de la aplicación = mayor rendimiento • Detalles como saltos a funciones • Manejo de apuntadores • Búsqueda de elementos que hagan más rápido el procesamiento • Optimizar algoritmos lo más que se pueda • Dejar el sistema de ventanas y manejador de eventos independiente de la parte que dibuja Curso OpenGL IEEE, Espinosa Ponce Ernesto

  43. Empezando a trabajar con gráficos • Instalación y configuración del ambiente de trabajo • Visual Studio 2005 • Verificación del soporte para los programas (dll’s) • Agregar las librerías y configurar proyectos • Bibliotecas que vamos a revisar • OpenGL • GLU (solo algunos elementos) • GLUT ( procesamiento de ventanas, eventos) Curso OpenGL IEEE, Espinosa Ponce Ernesto

  44. Comportamiento de una aplicación gráfica Inicialización Variables Usuario Variables de Objetos Variables Ambiente Ejecución de acciones Salida a Usuario Termina Liberar Recursos Curso OpenGL IEEE, Espinosa Ponce Ernesto

More Related