diff --git a/src/ol/webgl/webgl.js b/src/ol/webgl/webgl.js index 204c6ecb29..a3fae01859 100644 --- a/src/ol/webgl/webgl.js +++ b/src/ol/webgl/webgl.js @@ -2,6 +2,19 @@ goog.provide('ol.webgl'); goog.provide('ol.webgl.WebGLContextEventType'); +/** + * @const + * @private + * @type {Array.} + */ +ol.webgl.CONTEXT_IDS_ = [ + 'webgl', + 'webgl-experimental', + 'webkit-3d', + 'moz-webgl' +]; + + /** * @enum {string} */ @@ -17,7 +30,17 @@ ol.webgl.WebGLContextEventType = { * @return {WebGLRenderingContext} WebGL rendering context. */ ol.webgl.getContext = function(canvas, opt_attributes) { - return canvas.getContext('experimental-webgl', opt_attributes); + var context, i, ii = ol.webgl.CONTEXT_IDS_.length; + for (i = 0; i < ii; ++i) { + try { + context = canvas.getContext(ol.webgl.CONTEXT_IDS_[i], opt_attributes); + if (!goog.isNull(context)) { + return context; + } + } catch (e) { + } + } + return null; };