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