Você está na página 1de 36

Graficacin con OpenGL

Impartido por I.S.C. Erick Hernndez Njera


Semestre Agosto Diciembre 2012 IT-TLAHUAC
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera 1

Captulo I
Introduccin a OpenGL
2 Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

Tema 1
Qu es OpenGL Orgenes de la Biblioteca
3 Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

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

Qu es OpenGL?
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

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

Orgenes de OpenGL
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

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

Historia de OpenGL
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

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

Un poco de ms historia
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

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.

Documentacin disponible
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

El Libro Naranja - The Orange Book: The OpenGL Shading Language.


Libro de referencia y tutorial para GSLS (Lenguaje de Shaders de OpenGL)

Ms documentacin
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

Tema 2
Caractersticas de la Biblioteca
10 Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

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

Propsito: Dibujado (puntos, lneas, polgonos) OpenGL como una Mquina de Estados , prefiero llamarlos Switches

Caractersticas de OpenGL
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

11

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

Caractersticas de OpenGL
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

12

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

Pipeline Grfico
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

13

Es decir
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

14

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

En conclusin: OpenGL tiene


Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

15

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

Y OpenGL no tiene
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

16

Tema 3
Usos, aplicaciones y alcances de la biblioteca
17 Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

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)

Usos
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

18

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

Aplicaciones
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

19

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

Alcances de la biblioteca
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

20

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

Qu ms ofrece
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

21

Tema 4
Generalidades de la programacin bajo OpenGL
22 Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

Biblioteca OpenGL
Archivos de cabecera Archivos obj o lib DevC++ Verificar el soporte dentro de la plataforma elegida y bibliotecas para su ejecucin

Estructura de directorios estndar para OpenGL Biblioteca auxiliar GLU (GL Utilities)

Elementos necesarios
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

23

Y las ventanas , mouse, teclado????


GLUT GL Utility Toolkit API de Win32
SDL Image Devil SDL Mixer OpenAL

Imgenes

Sonido

Qu pasa con lo que no tiene


Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

24

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

Y en linux??
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

25

HARDWARE

Como funciona??
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

26

OpenGL contiene 3 elementos distintos bsicos.


Funciones
Constantes Tipos de datos

Sintaxis Bsica
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

27

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

Funciones
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

28

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

Sintaxis de funciones
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

29

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

Tipos de datos
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

30

31 Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

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

Constantes
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

32

Ej.
GL_LIGHTING GL_COLOR_BUFFER_BIT GL_LINES

Tambin las encontramos en GLUT Ej.


GLUT_LEFT_BUTTON

Constantes
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

33

Conocer elementos de computacin grfica Buen nivel de programacin bsica en C, 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

Qu ms necesito?
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

34

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

Recomendaciones y consideraciones
Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

35

Instalacin y configuracin del ambiente de trabajo


Dev C++ 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)

Empezando a trabajar con grficos


Curso OpenGL IT-Tlahuac, I.S.C. Erick Hernndez Njera

36

Você também pode gostar