Curso computaci n gr fica y opengl
Download
1 / 44

Curso Computación Gráfica y OpenGL - PowerPoint PPT Presentation


  • 84 Views
  • Uploaded on
  • Presentation posted in: General

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha

Download Presentation

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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


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


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


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


Capítulo I

Introducción a OpenGL

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Tema 1

Qué es OpenGL

Orígenes de la Biblioteca

Curso OpenGL IEEE, Espinosa Ponce Ernesto


¿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


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


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


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


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


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


Tema 2

Características de la Biblioteca

Curso OpenGL IEEE, Espinosa Ponce Ernesto


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


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


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


Es decir…

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Pipeline de OpenGL

Curso OpenGL IEEE, Espinosa Ponce Ernesto


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


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


Tema 3

Usos, aplicaciones y alcances de la biblioteca

Curso OpenGL IEEE, Espinosa Ponce Ernesto


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


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


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


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


Tema 4

Ejemplos de aplicaciones

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Ejemplos

  • Piston

  • Mano básica

  • Mano iluminada

  • LIMN

  • Curvas Paramétricas

  • Voxelización

  • 3DLoader

  • PathFinder

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Mas ejemplos

  • Demo modelneitor con código fuente

  • Frets on Fire

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Tema 5

Generalidades de la programación bajo OpenGL

Curso OpenGL IEEE, Espinosa Ponce Ernesto


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


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


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


Como funciona??

HARDWARE

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Sintaxis Básica

  • OpenGL contiene 3 elementos distintos básicos.

    • Funciones

    • Constantes

    • Tipos de datos

Curso OpenGL IEEE, Espinosa Ponce Ernesto


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


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


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


Curso OpenGL IEEE, Espinosa Ponce Ernesto


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


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


¿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


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


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


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


ad
  • Login