WebGL

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
WebGL
WebGL logo
Desarrollador
WebGL Working Group
www.khronos.org/webgl/
Información general
Diseñador Mozilla Foundation
Lanzamiento inicial 3 de marzo de 2011
Última versión estable 1.0.1 (info)
27 de enero de 2012
Género API
Plataforma Multiplataforma
Licencia Personalizada
En español No No

WebGL[1] es una especificación estándar que está siendo desarrollada actualmente para mostrar gráficos en 3D en navegadores web. El WebGL permite mostrar gráficos en 3D acelerados por hardware (GPU) en páginas web, sin la necesidad de plug-ins en cualquier plataforma que soporte OpenGL 2.0 u OpenGL ES 2.0. Técnicamente es un API para javascript que permite usar la implementación nativa de OpenGL ES 2.0 que será incorporada en los navegadores. WebGL es gestionado por el consorcio de tecnología sin ánimo de lucro Khronos Group .

Historia[editar]

WebGL creció desde los experimentos del canvas 3D comenzados por Vladimir Vukićević en Mozilla. El primero mostró un prototipo de Canvas 3D en 2006. A finales de 2007, tanto Mozilla[2] como Opera[3] habían hecho sus propias implementaciones separadas. A principios de 2009 Mozilla y Khronos formaron el WebGL Working Group (Grupo de Trabajo del WebGL).

El Grupo de Trabajo del WebGL incluye Apple, Google, Mozilla, y Opera, y WebGL ya está presente en las builds de Mozilla Firefox, Mozilla Fennec, Google Chrome y también en la versión de Safari incorporada en OS X Lion (Safari 5.1).[4]

Notables primeras aplicaciones de WebGL incluyen Google Maps y Zygote Body.

Diseño[editar]

WebGL está basado en OpenGL ES 2.0 y proporciona una API para gráficos 3D. Se utiliza el elemento canvas HTML5 y se accede mediante interfaces Document Object Model. Gestión de memoria automática se proporciona como parte del lenguaje JavaScript.

WebGL carece de las rutinas matemáticas matriz eliminadas en OpenGL 3.0. Esta funcionalidad debe ser proporcionada por el usuario en el espacio de código JavaScript; este código necesario se complementa con frecuencia con una biblioteca de matriz tal como glMatrix, TDL, o MJS.

Implementación[editar]

Actualmente es soportado principalmente en Internet Explorer (versión 11), Google Chrome y Mozilla Firefox aunque también funciona con limitaciones en Opera browser y en Safari bajo el sistema operativo de Apple para computadoras de escritorio.

Numerosas implementaciones han sido desarrolladas además para buscadores de plataformas móviles.

Bibliotecas en javaScript[editar]

Como WebGL es una tecnología diseñada para trabajar directamente con el GPU (unidad de procesamiento gráfico) es difícil de codificar en comparación con otros estándares web más accesibles, es por eso que muchas bibliotecas de JavaScript han surgido para resolver este problema:

C3DL, CopperLicht, Curve3D, CubicVR, EnergizeGL, GammaJS, GLGE, GTW, JS3D, Kuda, O3D, OSG.JS, PhiloGL, Pre3d, SceneJS, SpiderGL, TDL, Three.js, X3DOM.

Entre ellas Three.js es la más popular en términos de número de usuarios. Es ligera y tiene un bajo nivel de complejidad en comparación con la especificación WebGL original.

Creación del contenido[editar]

Las escenas WebGL se pueden crear sin necesidad de programación utilizando una herramienta de creación de contenidos, como Blender o con Autodesk Maya. Las escenas luego se exportan a WebGL. Esto fue posible por primera vez Inka3D, un plugin de exportación WebGL para Maya. También hay servicios para publicar contenido en línea 3D interactivo utilizando WebGL como p3d.in y Sketchfab.

WebGL embebido[editar]

Como WebGL está diseñado para ejecutar en el lado del cliente con las operaciones de renderización pesadas ​​realizadas por los usuarios en el GPU de la computadora, su codigo fuente puede ser relativamente fácilmente embebido en, por ejemplo, un microcontrolador PIC, o cualquier otro con la implementación de la pila TCP / IP, de modo que el microcontrolador actuará como servidor web y el resto de tareas se desarrollarán en el lado del cliente.[5]

Véase también[editar]

Referencias[editar]

Enlaces externos[editar]