Sie sind auf Seite 1von 44

Curso

Computacin
Grfica y OpenGL
Impartido por
Ernesto Espinosa Ponce

Intersemestre 2008-1 20082


IEEE UNAM
Curso OpenGL IEEE, Espinosa Ponce Ernesto

Experiencia

Egresando de la primera generacin del


mdulo de Computacin Grfica
Experiencia de 2 aos en el desarrollo de
grficos
Materias acreditadas: Computacin Grfica,
Computacin Grfica Avanzada, CAD,
Procesamiento Digital de Imgenes, Diseo de
Interfaces, Multimedia y Realidad Virtual
Experiencia en el desarrollo de Grficos con
OpeGL tanto bajo plataforma Windows como
Linux
Curso OpenGL IEEE, Espi

Proyectos

LIMN, Proyecto Jurasic Plant


Proyecto NXR, Modelneitor
Participacin en Simulador Virtual de
Operaciones de Prstata en el CCADET
Proyecto 3DLoader
Proyecto CuacraftGraphicClient
Proyecto Mictlan Engine
Desarrollo de tesis en visualizacin 3D de
agua fluyendo
Curso OpenGL IEEE, Espi

Presentacin de alumnos

Nombre, Semestre, Carrera


Motivo por el cual ha decidido tomar el curso
Mdulo si es que lo ha elegido o cual piensa
elegir
rea de inters dentro de las grficas por
computadora
Lenguajes de programacin que maneja
Ha realizado desarrollo de interfaces grficas,
con qu API
Qu nivel considera tener dentro del lenguaje C
Cules son los resultados que espera tener al
terminar este curso
Curso OpenGL IEEE, Espi

Captulo I
Introduccin a OpenGL

Curso OpenGL IEEE, Espinosa Ponce Ernesto

Tema 1
Qu es OpenGL
Orgenes de la Biblioteca

Curso OpenGL IEEE, Espinosa Ponce Ernesto

Qu es OpenGL?

OpenGL es una biblioteca para el desarrollo de


grficos por computadora en 2D y 3D
multiplataforma (Linux, Windows, Unix, MacOS,
PS3)

Su nombre proviene de Open Graphics Library

Es una especificacin que define una API (del


ingls Application Programming Interface Interfaz de Programacin de Aplicaciones)
para la programacin de grficos en varios
lenguajes
Curso OpenGL IEEE, Espi

Orgenes de OpenGL

Inicio de la computacin grfica: Ivan


Sutherland (50s -60s) Sketchpad
Simuladores de Vuelo
Implementaciones en ensamblador
Surgen las primeras bibliotecas de
grficos(PHIGS)
OpenGL fue creada en 1992 por
Silicon Graphics Inc. , su antecesora
se llamaba IRIS GL
Curso OpenGL IEEE, Espi

Historia de OpenGL

IRIS GL su antecesora contena elementos y


funciones para manejo de Ventanas, Ratn y
Teclado que hacan tener problemas para un
esquema de licenciamiento abierto
Se busc emtonces eliminar funciones no
reelevantes para grficos, 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 pblica
1995 Microsoft lanza Direct3D
Curso OpenGL IEEE, Espi

Un poco de ms 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, Espi

10

Documentacin
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 pginas del man de


OpenGL.
Incluye un poster desplegable con el diagrama de la
estructura de una implementacin ideal de OpenGL.
Curso OpenGL IEEE, Espi

11

Ms documentacin

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, Espi

12

Tema 2
Caractersticas de la
Biblioteca

Curso OpenGL IEEE, Espinosa Ponce Ernesto

13

Caractersticas de
OpenGL

Objetivos
1. Ocultar complejidad de Hardware
2. Ocultar las capacidades del Hardware

Propsito: Dibujado (puntos, lneas,


polgonos)

OpenGL como una Mquina de


Estados , prefiero llamarlos Switches
Curso OpenGL IEEE, Espi

14

Caractersticas de
OpenGL

Creada para tener la mejor calidad


posible en grficos, lo cual depende
en gran medida del Hardware
Da gran libertad para crear grficos
pero requiere de conocimientos de
computacin grfica
Manejo de un pipeline grfico

Curso OpenGL IEEE, Espi

15

Pipeline Grfico

Es el proceso mediante el cual las


abstracciones de un Espacio de Objetos
(vectores, vrtices, muchas matemticas)
pasan a ser elementos de un Espacio de
Dispositivo (que generalmente son pxeles)
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, Espi

16

Es decir

Curso OpenGL IEEE, Espi

17

Pipeline de OpenGL

Curso OpenGL IEEE, Espi

18

En conclusin: OpenGL
tiene

Funciones para dibujar en 2D y 3D


Transformaciones
Algoritmos de iluminacin
Z-Buffering
Mapeo de Texturas
Soporte para Shaders
Blending, elementos de antialiasing ,
efectos de Fog
Curso OpenGL IEEE, Espi

19

Y OpenGL no tiene

Funciones para manejar ventanas, eventos


de ratn o teclado
Funciones o procedimientos para crear un
objeto completo a partir de una descripcin
natural ejemplo: comando
dibuja_llanta_de_un_camin
Soporte nativo para dibujado de curvas
Soporte nativo para audio y/o texto
Deteccin de colisiones
Carga de imgenes
Curso OpenGL IEEE, Espi

20

Tema 3
Usos, aplicaciones y alcances
de la biblioteca

Curso OpenGL IEEE, Espinosa Ponce Ernesto

21

Usos
OpenGL se ha utilizado en los siguientes
campos de la computacin que requieren de
desarrollo de grficos:

CAD
Realidad Virtual
Representacin cientfica
Visualizacin de Informacin
Simuladores
Desarrollo de videojuegos (Soportada en
PS3)
Curso OpenGL IEEE, Espi

22

Aplicaciones

Simuladores de vuelo militares ( EU)


Simuladores de operaciones de tejido
(En Europa principalmente)
Desarrollo de videojuegos como
GLQuake de IdSoftware
Programas de diseo (3D Max)
Desarrollo de Game Engines
Programas de simulacin en general,
CAD y CAM, etc
Curso OpenGL IEEE, Espi

23

Alcances de la biblioteca

La competencia : Direct3D
OpenGL fue diseada para la calidad
Direct3D incluye emulacin por
software
Es un estndar de la industria
Soportada en muchas plataformas
Escalable y estable
Fcil de usar
Bien documentada
Curso OpenGL IEEE, Espi

24

Qu ms 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, Espi

25

Tema 4
Ejemplos de aplicaciones

Curso OpenGL IEEE, Espinosa Ponce Ernesto

26

Ejemplos

Piston
Mano bsica
Mano iluminada
LIMN
Curvas Paramtricas
Voxelizacin
3DLoader
PathFinder
Curso OpenGL IEEE, Espi

27

Mas ejemplos

Demo modelneitor con cdigo fuente


Frets on Fire

Curso OpenGL IEEE, Espi

28

Tema 5
Generalidades de la
programacin bajo OpenGL

Curso OpenGL IEEE, Espinosa Ponce Ernesto

29

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 ejecucin

Estructura de directorios estndar para


OpenGL
Biblioteca auxiliar GLU (GL Utilities)
Curso OpenGL IEEE, Espi

30

Qu pasa con lo que no


tiene

Y las ventanas , mouse, teclado????

Imgenes

GLUT GL Utility Toolkit


API de Win32

SDL Image
Devil

Sonido

SDL Mixer
OpenAL
Curso OpenGL IEEE, Espi

31

Y en linux??

Implementacin libre Mesa3D


Biblioteca like OpenGL
Generalmente puede descargarse en
paquetes para su programacin
Tampoco contiene elementos para
manejo de ventanas

Opciones GTK, SDL, GLUT, FreeGLUT,


OpenGLUT
Curso OpenGL IEEE, Espi

32

Como funciona??

HARDWARE
Curso OpenGL IEEE, Espi

33

Sintaxis Bsica

OpenGL contiene 3 elementos


distintos bsicos.

Funciones

Constantes

Tipos de datos

Curso OpenGL IEEE, Espi

34

Funciones

Usos
Dibujado de elementos
Manipulacin de proyecciones
Transformaciones Geomtricas
Habilitacin / Deshabilitacin de switches
Texturizado
Aplicacin de elementos para lograr
iluminacin
Cuenta con 150 funciones bsicas

Curso OpenGL IEEE, Espi

35

Sintaxis de funciones

Se anteponen gl si pertenecen a la
biblioteca OpenGL, glu o glut si son de
stas respectivamente
Contienen informacin al final de
cuntos parmetros reciben y cul es
su tipo
Ejemplos:
glVertex3f
glVertex3fv
glVertex3i

Curso OpenGL IEEE, Espi

36

Tipos de datos

Evitan problemas de implementacin en


compiladores donde el tamao de los
tipos de datos son diferentes a los
estndares

Se recomienda su uso para asegurar el


rendimiento de una aplicacin ms no es
necesario u obligatorio

Inician con GL
Curso OpenGL IEEE, Espi

37

Curso OpenGL IEEE, Espi

38

Constantes

Usos
Activar o desactivar ciertas propiedades de
dibujado o switches
Dar ciertos valores a parmetros de funciones
que configuran algn elemento

Todos van con maysculas empezando


con GL y generalmente tienen _ cuando
presentan espacios, ya que sus nombres
son muy descriptivos acerca de para que
sirven
Curso OpenGL IEEE, Espi

39

Constantes

Ej.
GL_LIGHTING
GL_COLOR_BUFFER_BIT
GL_LINES

Tambin las encontramos en GLUT


Ej.

GLUT_LEFT_BUTTON
Curso OpenGL IEEE, Espi

40

Qu ms necesito?

Conocer elementos de computacin grfica


Buen nivel de programacin bsica 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, dedicacin y desarrollos de
proyectos personales, tiempo
Curso OpenGL IEEE, Espi

41

Recomendaciones y
consideraciones

Tamao en memoria
Rapidez de la aplicacin = mayor rendimiento
Detalles como saltos a funciones
Manejo de apuntadores
Bsqueda de elementos que hagan ms
rpido el procesamiento
Optimizar algoritmos lo ms que se pueda
Dejar el sistema de ventanas y manejador de
eventos independiente de la parte que dibuja
Curso OpenGL IEEE, Espi

42

Empezando a trabajar con


grficos

Instalacin y configuracin del ambiente


de trabajo
Visual Studio 2005
Verificacin del soporte para los programas
(dlls)
Agregar las libreras y configurar proyectos

Bibliotecas que vamos a revisar


OpenGL
GLU (solo algunos elementos)
GLUT ( procesamiento de ventanas, eventos)

Curso OpenGL IEEE, Espi

43

Comportamiento de una
aplicacin grfica
Inicializaci
Variables
n
Usuario
Variables de
Objetos
Ejecucin de
acciones

Variables
Ambiente
Salida a
Usuario
Termina

Liberar
Recursos
Curso OpenGL IEEE, Espi
44

Das könnte Ihnen auch gefallen