From f28d635e64a4a7eb4010a41c687c6d206e154947 Mon Sep 17 00:00:00 2001 From: kkapsner Date: Tue, 10 Oct 2017 20:13:40 +0200 Subject: [PATCH] Better webGL test (also covers webgl2). --- test/webGL-Test.js | 46 ++++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/test/webGL-Test.js b/test/webGL-Test.js index 858b471..d580292 100644 --- a/test/webGL-Test.js +++ b/test/webGL-Test.js @@ -1,20 +1,34 @@ (function(){ "use strict"; - var canvas = document.createElement("canvas"); - canvas.width = 11; - canvas.height = 13; - var gl = canvas.getContext("webgl"); - - // paint it completely black - gl.clearColor(0, 0, 0, 1); - gl.clear(gl.COLOR_BUFFER_BIT); - - var pixels = new Uint8Array(gl.drawingBufferWidth * gl.drawingBufferHeight * 4); - gl.readPixels(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels); - var values = {}; - for (var i = 0; i < pixels.length; i += 1){ - values[pixels[i]] = (values[pixels[i]] || 0) + 1; - } - document.getElementById("output").textContent = JSON.stringify(values); + ["webgl", "webgl2"].forEach(function(context, index){ + var output = document.createElement("div"); + document.getElementById("output").appendChild(output); + try { + var canvas = document.createElement("canvas"); + canvas.width = 11; + canvas.height = 13; + var gl = canvas.getContext(context) || canvas.getContext("experimental-" + context); + + // paint it completely black + gl.clearColor(index * 0.25, index * 0.25, index * 0.25, 1); + gl.clear(gl.COLOR_BUFFER_BIT); + + var pixels = new Uint8Array(gl.drawingBufferWidth * gl.drawingBufferHeight * 4); + gl.readPixels(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight, gl.RGBA, gl.UNSIGNED_BYTE, pixels); + var values = {}; + var max = 0; + for (var i = 0; i < pixels.length; i += 1){ + values[pixels[i]] = (values[pixels[i]] || 0) + 1; + max = Math.max(max, values[pixels[i]]); + } + + output.textContent = context + ": " + (max !== 3 * values[255]? "": "not ") + "faked"; + output.title = JSON.stringify(values); + } + catch (e){ + output.textContent = context + ": ERROR"; + output.title = e; + } + }); }()); \ No newline at end of file