260 likes | 440 Views
Herramientas y bibliotecas para gráficas. M.I.A Daniel Alejandro García López. Software de Gráficas. Paquetes generales de programación Paquetes de aplicaciones especificas. Paquete de programación.
E N D
Herramientas y bibliotecas para gráficas M.I.A Daniel Alejandro García López
Software de Gráficas • Paquetes generales de programación • Paquetes de aplicaciones especificas
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.
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.
Breve historia del software gráfico • 1977: primer sistema para gráficos 2D (CoreGraphicSystem) • 1984: primer API industrial desarrollada por SiliconGraphics para gráficos 3D (GraphicsLibrary - GL) • 1985: primer estándar oficial para un API de gráficos 2D (GraphicalKernelSystem - GKS)
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)
Breve historia del software gráfico • 1995: Microsoft lanza una API propietaria para competir con OpenGL (Direct3D/DirectX) • 1997: desarrollado a partir de OpenInventorsurge el primer lenguaje para gráficos 3D y realidad virtual en la web (Virtual RealityModellingLanguage - VRML)
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), OpenGL2.0 • JOGL “interface” de Java con OpenGL 2.0
OpenGL • Desarrollada originalmente por SiliconGraphics Inc. • Especificación estándar para escribir aplicaciones gráficas • Multilenguaje • Multiplataforma • Gráficos 2D y 3D • Usado en CAD, Realidad Virtual, Simulación.
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.
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.
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
Biblioteca de utilidades • GLUI: Interfaz de usuario basada en GLUT; proporciona elementos de control tales como botones, cajas de selección y spinners.
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
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
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.
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
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.
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.
DirectX vs OpenGL 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 • 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
OpenGL vs Java3D 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 • Funcionalidad solo para gráficos • Enfoque de procedimientos • Soporte pobre de controladores • Independiente de plataforma • Mejor rendimiento • Mas fácil aprendizaje
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.