PDF de programación - WebGL

WebGLgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 16 de Febrero del 2018)
752 visualizaciones desde el 16 de Febrero del 2018
594,2 KB
15 paginas
Creado hace 12a (07/10/2011)
Web-based Graphics Library

Carlos Samuel Cantero Gonz´alez.

[email protected]

Universidad Cat´olica Nuestra Se˜nora de la Asunci´on

Facultad de Ciencias y Tecnolog´ıa

Ingenier´ıa inform´atica.

Resumen ´Este art´ıculo trata sobre uno de los nuevos est´andares de la
Web3D: WebGL. Aqu´ı se dar´a a conocer qu´e es WebGL, c´omo trabajar
con ella, algunas aplicaciones desarrolladas y todo lo relacionado con su
crecimiento en la industria.

1.

Introducci´on

Antes de empezar a dar una definici´on formal de WebGL, se dar´a a conocer
otros t´erminos que se utilizar´an a lo largo del texto. Es imprescindible entrar en
estos detalles para una mejor comprensi´on del tema.
El primer t´ermino importante a mencionar es HTML5. HTML5 (HyperText
Markup Language, versi´on 5), es la quinta versi´on del lenguaje para estructurar
y presentar contenido en la web. Actualmente se encuentra en modo experimen-
tal aunque ya es utilizado por muchos desarrolladores. Su principal objetivo es
manejar la mayor´ıa de los contenidos multimedias actuales sin la necesidad de
plugins.[11] Ofrece muchas caracter´ısticas significativas, pero la que nos interesa
ahora es el elemento canvas.
Canvas es un elemento de HTML5 que permite la generaci´on de gr´aficos din´ami-
camente por medio del scripting. Permite generar gr´aficos est´aticos y animacio-
nes. Este objeto puede ser accedido a trav´es de javascript, permitiendo generar
gr´aficos 2D, animaciones, juegos y composici´on de im´agenes.[10] Actualmente
est´a soportado por la mayor´ıa de los navegadores, incluyendo Internet explorer
9. Con canvas podemos crear rect´angulos, l´ıneas, arcos, curvas, dibujar im´age-
nes, a˜nadir colores y estilos, adem´as de transformaciones y composiciones, y lo
m´as importante, animaciones. Nos permite hacer im´agenes din´amicas pero sin
plugins externos.
OpenGL(Open Graphics Library) es una especificaci´on est´andar que define una
API (application programming interface) multiplataforma para escribir aplica-
ciones que contengan gr´aficos 2D y 3D. [12]. OpenGL est´a manejado por el grupo
tecnol´ogico Khronos Group, el cual es un consorcio industrial sin fines de lucro
encargado de crear est´andares abiertos para permitir la creaci´on y aceleraci´on
de la computaci´on paralela, gr´aficos y medios din´amicos en una variedad de pla-
taformas y dispositivos.[23]
OpenGL ES 2.0 (OpenGL for Embedded Systems) es una variante simplifi-
cada de OpenGL para dispositivos integrados, tales como smartphones, PDAs,

consolas, entre otros. [13] Consiste de un subconjunto bien definido de OpenGL.
Permite la programaci´on completa de gr´aficos 3D. Al igual que OpenGL, est´a ma-
nejado por Khronos Group.
Toda la familia de OpenGL tiene una caracter´ıstica muy importante: la acelera-
ci´on por hardware.
Hardware-Acceleration (Aceleraci´on por hardware) es el uso del hardware
para desempe˜nar algunas funciones mucho m´as r´apido de los que es posible en
software corriendo en la CPU de prop´osito general. De esta manera se utiliza la
GPU de la tarjeta gr´afica para procesar grandes cargas de gr´aficos. [6]
La GPU (Graphics Processing unit) o unidad de procesamiento de gr´aficos es
un procesador dedicado al procesamiento de gr´aficos u operaciones de coma
flotante.[15]
JavaScript es un lenguaje de scripting multiparadigma que soporta los estilos
de programaci´on orientada a objetos, imperativa y funcional. Es un lenguaje
del lado del cliente (client-side), implementado como parte del navegador web,
permitiendo mejoras en la interfaz de usuario y lo m´as importante, p´aginas web
din´amicas. [7] Todos los navegadores web modernos interpretan el c´odigo ja-
vascript integrado en las p´aginas web. Javascript permite a los navegadores ser
capaces de reconocer objetos en una p´agina HTML a trav´es del DOM.
Por ´ultimo, DOM (Document Object Model) o modelado de objetos del docu-
mento es una API multiplataforma para representar e interactuar con objetos
en documentos HTML, XHTML y XML. [5] Esto permitir´a a los programas
y scripts acceder din´amicamente y modificar el contenido, estructura y estilo
de los documentos HTML y XHTML. DOM es requerido por JavaScript para
inspeccionar y modificar p´aginas web din´amicamente.

2. Comenzando con WebGL

WebGL fue creado inicialmente por Mozilla, y m´as tarde estandarizado por
el grupo tecnol´ogico Khronos Group, el mismo grupo responsable de OpenGL y
OpenGL ES. El primer prototipo fue dise˜nado por Mozilla en el a˜no 2006 y a
principios del 2009, Mozilla y Khronos Group comenzaron el WebGL Working
Group. Adem´as de los ya mencionados, actualmente los principales fabricantes
de navegadores, Apple (Safari), Google (Chrome) y Opera (Opera), as´ı como
algunos proveedores de hardware son miembros del grupo de trabajo WebGL o
WebGL Working Group.
Todos ellos est´an interesados en verificar que el contenido WebGL pueda correr
tanto en desktop y hardware de dispositivos m´oviles.
Pero, ¿Qu´e es WebGL?. WebGL (Web-based Graphics Library) es un est´andar
web multiplataforma para una API de gr´aficos 3D de bajo nivel basado en
OpenGL ES 2.0 y expuesto a trav´es del elemento canvas de HTML5 como interfa-
ces DOM (Document Object Model).[24] Esta API provee enlaces de JavaScript
a funciones OpenGL haciendo posible proveer contenido 3D acelerado en hard-
ware a las p´aginas web.[1] Esto hace posible la creaci´on de gr´aficos 3D que se
actualizan en tiempo real, corriendo en el navegador.

A partir de la definici´on anterior, podemos decir tambi´en que WebGL, es una
librer´ıa de software que extiende al lenguaje de programaci´on javaScript pa-
ra permitir generar gr´aficos interactivos 3D dentro de cualquier navegador web
compatible. WebGL es un contexto del elemento canvas que provee un API de
gr´aficos 3D sin la necesidad de plugins.[8] Decir que WebGL es un contexto del
elemento canvas, podr´ıa no entenderse hasta que se muestre como trabajan jun-
tos en la siguiente secci´on.
WebGL trae el API de OpenGL ES 2.0 al elemento canvas. El contenido 3D
est´a limitado a canvas. Se hicieron cambios en la API de WebGL en relaci´on
con la API de OpenGL ES 2.0 para mejorar la portabilidad a trav´es de varios
sistemas operativos y dispositivos.
Podemos observar un modelo conceptual de la arquitectura de WebGL en la
figura 1. En este modelo se utiliza JavaScript para obtener a trav´es del DOM

Figura 1. Modelo conceptual de la arquitectura WebGL.

el elemento Canvas de HTML5. Una vez obtenido el elemento Canvas, se defi-
ne el contexto WebGL, por medio del cual accedemos a la API de WebGL, la
cual est´a basada en la API de OpenGL ES. Por eso se dice que, t´ecnicamente
es un enlace (binding) para JavaScript para usar la implementaci´on nativa de
OpenGL ES 2.0.[8] Este ´ultimo, se encarga de comunicarse con el driver de la
tarjeta gr´afica y as´ı poder realizar la aceleraci´on por hardware en la GPU. Como
vemos, se diferencian los eventos que ocurren en el espacio de usuario y en el
kernel.
La API de WebGL interact´ua bien con el resto de las plataformas web; espec´ıfi-
camente se proporciona apoyo para la carga de texturas 3D a partir de im´agenes
HTML o video, y la entrada del teclado y mouse se manejan mediante los cono-
cidos eventos DOM.
Este API poderoso es de muy bajo nivel y su uso requiere buenos conocimientos
acerca de la programaci´on 3D y matem´atica 3D. Otra desventaja de WebGL es
que consume mucha CPU.
Una caracter´ıstica importante de WebGL es que, brinda la posibilidad de con-
tenidos 3D a la web sin la necesidad de utilizar plugins, ya que se encuentra
implementado en el navegador.
Otra caracter´ıstica relevante: WebGL es un est´andar web, pero ¿Porqu´e es impor-
tante un est´andar?. Un est´andar web, es un conjunto de especificaciones t´ecnicas
en constante evoluci´on y de mejores pr´acticas para construir sitios web. Con ello
se facilita el mantenimiento, la usabilidad, la interoperabilidad y la calidad de
los trabajos.[9]
Utilizar un est´andar asegura una larga vida a los proyectos, ya que provee por
lo menos una peque˜na estructura de mantenimiento. Tambi´en asegura de que la
mayor´ıa de las personas puedan visitar el sitio web, sin importar que navegador
se est´e utilizando. La compatibilidad hacia adelante y hacia atr´as (forward and
backward compatibility) es posible.[4]
En el caso particular de WebGL, su API est´a basado en un est´andar de gr´aficos
3D familiar y ampliamente aceptado.
No utilizar un est´andar tiene varias desventajas, como poco soporte, mayor ex-
posici´on a problemas de seguridad y problemas de performance. Adem´as la curva
de aprendizaje suele ser muy alta, con un costo-beneficio menor. Otro problema
que se puede dar es el del vendor lock in, en donde se tiene una dependencia
absoluta del proveedor, el cual puede tener un costo elevado.[26]
El lanzamiento (release) de la especificaci´on de la versi´on final de WebGL 1.0 se
di´o el 3 de marzo del 2011 en la conferencia de desarrolladores de juego (Game
Developers Conference - GDC), en San Francisco, Estados Unidos.

3. Utilizando WebGL

A partir de esta secci´on se busca entender m´as a fondo la definici´on anterior

de WebGL, y su funcionamiento.
En general, para empezar a trabajar con WebGL, tenemos que entender c´omo
funciona canvas. En la introducci´on se hab´ıa dado una definici´on de la misma.

Como sabemos, canvas es un elemento de HTML5 que nos permite la generaci´on
de gr´aficos de forma din´amica, el cual posee dos atributos, width (ancho) y height
(alto), y cuyo tama˜no por defecto es 150. Este objeto puede ser accedido a trav´es
de javaScript. A canvas hay que indicarle en que contexto queremos trabajar,
ya sea 2D o 3D (webGL). Podemos decir que el contexto es el acceso a una API
particular, para dibujar ya sea en 2D o WebGL.[18]

3.1. Ejemplo en contexto 2D

A partir de ahora se ir´a creando un ejemplo b´asico del uso del elementos

canvas utilizando un contexto 2D:

<canvas id="micanvas" width="200" height="150">
El navegador no soporta el elemento canvas de HTML5.
</canvas>

Con esto agregamos al
  • Links de descarga
http://lwp-l.com/pdf8825

Comentarios de: WebGL (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad