UNPKG

terriajs

Version:

Geospatial data visualization platform.

56 lines (47 loc) 1.85 kB
'use strict'; /*global require*/ var defined = require('terriajs-cesium/Source/Core/defined'); var result; /** * Determines if the current browser supports WebGL. * @return {Boolean|String} False if WebGL is not supported at all, 'slow' if WebGL is supported * but it has a major performance caveat (e.g. software rendering), and True * if WebGL is available without a major performance caveat. */ function supportsWebGL() { if (defined(result)) { return result; } //Check for webgl support and if not, then fall back to leaflet if (!window.WebGLRenderingContext) { // Browser has no idea what WebGL is. Suggest they // get a new browser by presenting the user with link to // http://get.webgl.org result = false; return result; } var canvas = document.createElement( 'canvas' ); var webglOptions = { alpha : false, stencil : false, failIfMajorPerformanceCaveat : true }; var gl = canvas.getContext("webgl", webglOptions) || canvas.getContext("experimental-webgl", webglOptions); if (!gl) { // We couldn't get a WebGL context without a major performance caveat. Let's see if we can get one at all. webglOptions.failIfMajorPerformanceCaveat = false; gl = canvas.getContext("webgl", webglOptions) || canvas.getContext("experimental-webgl", webglOptions); if (!gl) { // No WebGL at all. result = false; } else { // We can do WebGL, but only with software rendering (or similar). result = 'slow'; } } else { // WebGL is good to go! result = true; } return result; } module.exports = supportsWebGL;