Curso computaci n gr fica y opengl
This presentation is the property of its rightful owner.
Sponsored Links
1 / 44

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


  • 67 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

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

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

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

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

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

Capítulo I

Introducción a OpenGL

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Tema 1

Tema 1

Qué es OpenGL

Orígenes de la Biblioteca

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Qu es opengl

¿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

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

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

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

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

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

Tema 2

Características de la Biblioteca

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Caracter sticas de opengl

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 opengl1

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

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

Es decir…

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Pipeline de opengl

Pipeline de OpenGL

Curso OpenGL IEEE, Espinosa Ponce Ernesto


En conclusi n opengl tiene

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

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

Tema 3

Usos, aplicaciones y alcances de la biblioteca

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Curso computaci n gr fica y opengl

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

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

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

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

Tema 4

Ejemplos de aplicaciones

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Ejemplos

Ejemplos

  • Piston

  • Mano básica

  • Mano iluminada

  • LIMN

  • Curvas Paramétricas

  • Voxelización

  • 3DLoader

  • PathFinder

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Mas ejemplos

Mas ejemplos

  • Demo modelneitor con código fuente

  • Frets on Fire

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Tema 5

Tema 5

Generalidades de la programación bajo OpenGL

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Elementos necesarios

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

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

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

Como funciona??

HARDWARE

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Sintaxis b sica

Sintaxis Básica

  • OpenGL contiene 3 elementos distintos básicos.

    • Funciones

    • Constantes

    • Tipos de datos

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Funciones

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

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

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 computaci n gr fica y opengl

Curso OpenGL IEEE, Espinosa Ponce Ernesto


Constantes

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


Constantes1

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

¿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

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

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

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


  • Login