Está en la página 1de 44

Curso Computacin Grfica y OpenGL

Impartido por Ernesto Espinosa Ponce Intersemestre 2008-1 2008-2 IEEE UNAM
Curso OpenGL IEEE, Espinosa Ponce Ernesto 1

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, Espinosa Ponce Ernesto 2

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, Espinosa Ponce Ernesto 3

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, Espinosa Ponce Ernesto 4

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, Espinosa Ponce Ernesto 7

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, Espinosa Ponce Ernesto 8

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, Espinosa Ponce Ernesto 9

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, Espinosa Ponce Ernesto

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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto

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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto

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, Espinosa Ponce Ernesto 16

Es decir

Curso OpenGL IEEE, Espinosa Ponce Ernesto

17

Pipeline de OpenGL

Curso OpenGL IEEE, Espinosa Ponce Ernesto

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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 27

Mas ejemplos

Demo modelneitor con cdigo fuente Frets on Fire

Curso OpenGL IEEE, Espinosa Ponce Ernesto

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, Espinosa Ponce Ernesto 30

Qu pasa con lo que no tiene

Y las ventanas , mouse, teclado????

GLUT GL Utility Toolkit API de Win32

Imgenes

SDL Image Devil

Sonido

SDL Mixer OpenAL


Curso OpenGL IEEE, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 32

Como funciona??

HARDWARE
Curso OpenGL IEEE, Espinosa Ponce Ernesto 33

Sintaxis Bsica

OpenGL contiene 3 elementos distintos bsicos.

Funciones
Constantes Tipos de datos

Curso OpenGL IEEE, Espinosa Ponce Ernesto

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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 37

Curso OpenGL IEEE, Espinosa Ponce Ernesto

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, Espinosa Ponce Ernesto 39

Constantes

Ej.
GL_LIGHTING GL_COLOR_BUFFER_BIT GL_LINES

Tambin las encontramos en GLUT Ej.

GLUT_LEFT_BUTTON
Curso OpenGL IEEE, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 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, Espinosa Ponce Ernesto 43

Comportamiento de una aplicacin grfica


Inicializacin Variables Usuario

Variables de Objetos
Ejecucin de acciones

Variables Ambiente
Salida a Usuario Termina

Liberar Recursos
Curso OpenGL IEEE, Espinosa Ponce Ernesto 44

También podría gustarte