Transcript Herramientas y bibliotecas para gráficas
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