Better webGL test (also covers webgl2).

This commit is contained in:
kkapsner 2017-10-10 20:13:40 +02:00
parent 932ec56079
commit f28d635e64
1 changed files with 30 additions and 16 deletions

View File

@ -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;
}
});
}());