Download Herramientas y bibliotecas para gráficas

Document related concepts
no text concepts found
Transcript
Herramientas y bibliotecas
para gráficas
M.I.A Daniel Alejandro García
López
Page 1
Software de Gráficas
• Paquetes generales de programación
• Paquetes de aplicaciones especificas
Page 2
Paquete de programación
• Ofrece un amplio conjunto de funciones
gráficas que se pueden utilizar en un
lenguaje de programación de alto nivel.
• Generar componentes de la imagen(
líneas, polígonos, circunferencias, etc.)
• Determinar valores de color e intensidad,
seleccionar vistas y aplicar
transformaciones.
Page 3
Paquete de aplicaciones
especificas
• Diseñado para personas que no son
programadores.
• La interfaz para la rutinas de gráficas de
tales paquetes permite un fácil uso.
• Existen paquetes que están diseñados
para utilizarse con especificaciones de
coordenadas cartesianas.
Page 4
Breve historia del software
gráfico
• 1977: primer sistema para gráficos 2D
(Core Graphic System)
• 1984: primer API industrial desarrollada
por Silicon Graphics para gráficos 3D
(Graphics Library - GL)
• 1985: primer estándar oficial para un API
de gráficos 2D (Graphical Kernel System GKS)
Page 5
Breve historia del software
gráfico
• 1988: primer estándar oficial para un API
de gráficos 3D (PHIGS)
• 1992: estándar que integra PHIGS con el
X-windows (PEX)
• 1993: primer estándar industrial portable a
diversas plataformas hardware (OpenGL)
• 1993: API de alto nivel sobre OpenGL que
sigue paradigmas similares a PHIGS
(OpenInventor)
Page 6
Breve historia del software
gráfico
• 1995: Microsoft lanza una API propietaria
para competir con OpenGL
(Direct3D/DirectX)
• 1997: desarrollado a partir de
OpenInventor surge el primer lenguaje
para gráficos 3D y realidad virtual en la
web (Virtual Reality Modelling Language VRML)
Page 7
Breve historia del software
gráfico
• 1999: Java ya tiene su API: Java3D
• 2002-2003: extensiones de OpenGL y
DirectX para hardware gráfico
programable (GPU)
• 2003+: lenguajes de alto nivel para GPU:
Cg (NVIDIA), HLSL(Microsoft), OpenGL
2.0
• JOGL “interface” de Java con OpenGL
2.0
Page 8
OpenGL
Page 9
OpenGL
• Desarrollada originalmente por Silicon
Graphics Inc.
• Especificación estándar para escribir
aplicaciones gráficas
• Multilenguaje
• Multiplataforma
• Gráficos 2D y 3D
• Usado en CAD, Realidad Virtual,
Simulación.
Page 10
OpenGL
• Su función consiste en aceptar primitivas
tales como puntos, líneas y polígonos y
convertirlas a pixeles.
• El proceso es realizado por una pipeline
gráfica conocida como máquina de
estados de OpenGL
• Esta basada en procedimientos de bajo
nivel, contrario a las API’s descriptivas.
Page 11
Propósitos de OpenGL
• Ocultar la complejidad de la interfaz con
las diferentes tarjetas gráficas.
• Ocultar las diferentes capacidades de las
diversas plataformas de hardware, aunque
las implementaciones utilicen emulación.
Page 12
Bibliotecas de utilidades
• Añaden características no disponibles en
el propio OpenGL
• GLU: Ofrece funciones de dibujo de alto
nivel basadas en primitivas de OpenGL
• GLUT: API multiplataforma que facilita una
rudimentaria funcionalidad para el manejo
de ventanas e interacción por medio de
teclado y ratón
Page 13
Biblioteca de utilidades
• GLUI: Interfaz de usuario basada en
GLUT; proporciona elementos de control
tales como botones, cajas de selección y
spinners.
Page 14
Direct3D
Page 15
Direct3D
• Es parte de DirectX
• Propiedad de Microsoft
• Compuesto por dos APIS: modo inmediato
y modo retenido.
• Se comunica directamente con los drivers
de pantalla
Page 16
Propósito de Direct3D
• Facilitar el manejo y trazado de entidades
gráficas elementales, como líneas,
polígonos y texturas
• Efectuar transformaciones geométricas
• Proveer una interfaz con el hardware de
aceleración gráfica
Page 17
Modos de presentación
• Modo exclusivo: Ninguna otra aplicación
podrá hacer uso de la pantalla
• Modo en ventana: Se muestra en una
ventana. Colabora con el GDI.
Page 18
Java3D
Page 19
Java3D
• Es un proyecto que permite crear entornos
tridimensionales en el lenguaje Java.
• Corre sobre OpenGL o Direct3D
• Es una extensión del JDK 2 de Java
• Proporciona una colección de
constructores de alto nivel para crear y
manipular geometrías 3D
• Permite diseñar la escena basándose en
objetos geométricos, y no en triángulos
Page 20
Propósito de Java3D
• Proporcionar un amplio conjunto de
utilidades que permitan crear mundos en
3D interesantes
• Proporcionar un paradigma de
programación orientado a objeto de alto
nivel para permitir a los desarrolladores
generar sofisticadas aplicaciones y
applets de forma rápida.
Page 21
Propósitos de Java3D
• Proporcionar soporte a cargadores en
tiempo de ejecución. Esto permite que
Java3D se adapte a un gran número de
formatos de ficheros, como pueden ser
formatos específicos de distintos
fabricantes de CAD, formatos de
intercambio o VRML.
Page 22
DirectX vs OpenGL
• Proporciona gráficos y
funcionalidad de audio
• Enfoque orientado a
objetos de C++
• Tiene soporte para los
controladores
• Es para plataformas de
windows.
• Mejor rendimiento
• Es complejo de aprender
• Proporciona solo
funcionalidad de gráficos
• Usado en diferentes
lenguajes de
procedimientos
• Es poco el soporte de los
controladores
• Es independiente de las
plataformas
• Rendimiento promedio
• Es mas fácil su aprendizaje
Page 23
OpenGL vs Java3D
• Funcionalidad solo para
gráficos
• Enfoque de
procedimientos
• Soporte pobre de
controladores
• Independiente de
plataforma
• Mejor rendimiento
• Mas fácil aprendizaje
• Funcionalidad solo para
graficos
• Enfoque orientado a objetos
de Java
• Soporte pobre de
controladores
• Independiente de
plataforma
• Menor rendimientos
• Más fácil aprendizaje
• Corre sobre OpenGL o
DirectX
Page 24
Otras API’s propietarias
• Glide desarrollado por 3dfx
• QuickDraw 3D
• CUDA: conjunto de herramientas de
desarrollo creadas por nVidia que
permiten a los programadores usar una
variación del lenguaje de programación C
para codificar algoritmos en GPUs de
nVidia.
Page 25