Herramientas y bibliotecas para gráficas

Download Report

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