Notify if WebGL is not supported

This commit is contained in:
Frederic Junod
2013-11-29 10:43:02 +01:00
parent d2fd695635
commit e2d9c77e08
2 changed files with 85 additions and 72 deletions

View File

@@ -28,6 +28,10 @@
</div> </div>
</div> </div>
<div id="no-webgl" class="alert alert-error" style="display: none">
This example requires a browser that supports <a href="http://get.webgl.org/">WebGL</a>.
</div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span12"> <div class="span12">

View File

@@ -4,11 +4,19 @@ goog.require('ol.View2D');
goog.require('ol.layer.Tile'); goog.require('ol.layer.Tile');
goog.require('ol.source.OSM'); goog.require('ol.source.OSM');
var osm = new ol.layer.Tile({ if (!ol.webgl.SUPPORTED) {
source: new ol.source.OSM() var info = document.getElementById('no-webgl');
}); /**
* display error message
*/
info.style.display = '';
} else {
var map = new ol.Map({ var osm = new ol.layer.Tile({
source: new ol.source.OSM()
});
var map = new ol.Map({
layers: [osm], layers: [osm],
renderer: ol.RendererHint.WEBGL, renderer: ol.RendererHint.WEBGL,
target: 'map', target: 'map',
@@ -16,22 +24,22 @@ var map = new ol.Map({
center: [0, 0], center: [0, 0],
zoom: 2 zoom: 2
}) })
}); });
var fragmentShaderSource = [ var fragmentShaderSource = [
'precision mediump float;', 'precision mediump float;',
'void main() {', 'void main() {',
'}' '}'
].join(''); ].join('');
var vertexShaderSource = [ var vertexShaderSource = [
'attribute vec2 a_position;', 'attribute vec2 a_position;',
'void main() {', 'void main() {',
'gl_Position = vec4(a_position, 0, 1);', ' gl_Position = vec4(a_position, 0, 1);',
'}' '}'
].join(''); ].join('');
osm.on('precompose', function(event) { osm.on('precompose', function(event) {
var context = event.getGlContext(); var context = event.getGlContext();
var gl = context.getGL(); var gl = context.getGL();
@@ -84,10 +92,11 @@ osm.on('precompose', function(event) {
gl.colorMask(true, true, true, true); gl.colorMask(true, true, true, true);
gl.stencilFunc(gl.NOTEQUAL, 0, 0xff); gl.stencilFunc(gl.NOTEQUAL, 0, 0xff);
gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP); gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);
}); });
osm.on('postcompose', function(event) { osm.on('postcompose', function(event) {
var context = event.getGlContext(); var context = event.getGlContext();
var gl = context.getGL(); var gl = context.getGL();
gl.disable(gl.STENCIL_TEST); gl.disable(gl.STENCIL_TEST);
}); });
}