WebGL in Native Applications

13
Matti Dahlbom / Qvik Lead Architect WEBGL IN NATIVE APPLICATIONS PIZZA & BEER | 15.12.2016

Transcript of WebGL in Native Applications

Page 1: WebGL in Native Applications

Matti Dahlbom / Qvik Lead Architect

WEBGL IN NATIVE APPLICATIONS

PIZZA & BEER | 15.12.2016

Page 2: WebGL in Native Applications

@QVIK

JAVASCRIPT API FOR RENDERING INTERACTIVE

2D/3D GRAPHICS

Page 3: WebGL in Native Applications

@QVIK

BUT.. WHY

Page 4: WebGL in Native Applications

@QVIK

USES FOR 3D GRAPHICS INMOBILE APPLICATIONS

‣ Augmented Reality‣ Games & VR‣ 3D visualizations (physics, chemistry, ..)‣ 3D UIs‣ Maps & simulations

Page 5: WebGL in Native Applications

@QVIK

SOME MANDATORY YET TOTALLY RANDOM AND ONLY SLIGHTLY RELATED IMAGES

Page 6: WebGL in Native Applications

@QVIK

WEBGL API

Very low-level, aliased-on-OpenGL API:

gl.enable(gl.BLEND);gl.blendFunc(gl.ONE, gl.ONE);gl.disable(gl.CULL_FACE);gl.depthMask(false);

gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertices), gl.STATIC_DRAW);gl.bindBuffer(gl.ARRAY_BUFFER,squareVertexPositionBuffer); gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);

Page 7: WebGL in Native Applications

@QVIK

ENTER THREE.JS

Very high-level, scene graph -based API:

var texture = new THREE.TextureLoader().load( 'textures/crate.gif' );var geometry = new THREE.BoxBufferGeometry( 200, 200, 200 );var material = new THREE.MeshBasicMaterial( { map: texture } );mesh = new THREE.Mesh( geometry, material );scene.add( mesh );

Page 8: WebGL in Native Applications

@QVIK

SO WHAT ELSE CAN YOU DO IN JAVASCRIPT IN A WEBVIEW?

‣ Graphics - THREE.js‣ Networking - Socket.IO‣ Audio - Web Audio API‣ Physics - CANNON.js‣ UI - HTML/CSS

Page 9: WebGL in Native Applications

1 2 3

@QVIK

WHY SHOULD I USE WEBGL?

CROSS-PLATFORMTruly write once, run almost anywhere. All you need is a

browser/webview.

EASE OF DEVELOPMENTDevelop & test in desktop

browser, deploy on mobile.

GOOD ENOUGHPerformance and supported

feature set almost on par with native OpenGL ES.

Page 10: WebGL in Native Applications

1 2 3 4

@QVIK

WHY SHOULD I (POSSIBLY) NOT USE WEBGL?

IT’S JAVASCRIPTBut get over it.

Javascript shall inherit the Earth.

PERFORMANCEEspecially loading

times are slower than with native

alternatives. Harder to control memory consumption.

“NEW” TECHWebGL support is still

quite new tech, in mobile browsers.

Feature support may vary.

IPR VULNERABLECome up with a clever

way to protect your bundled JS sources!

Page 11: WebGL in Native Applications

@QVIK

NATIVE ALTERNATIVES

‣ Unity3D - whole application‣ Ogre3D - portable 3D engine with C++ APIs‣ SceneKit on iOS - high-level proprietary API‣ OpenGL - low-level, highly portable API

Page 12: WebGL in Native Applications

@QVIK

BORING SLIDES DONE, IT’S DEMO TIME!

FINALLY!

Page 13: WebGL in Native Applications

THANK YOUqvik.fi