Source code

Revision control

Copy as Markdown

Other Tools

"use strict";↩
function parseArgs() {↩
var query = window.location.search.substring(1);↩
var split = query.split("&");↩
var args = {}↩
for (var i = 0; i < split.length; i++) {↩
var pair = split[i].split("=");↩
var key = pair[0];↩
var value = true;↩
if (pair.length >= 2) {↩
eval("value = " + decodeURIComponent(pair[1]) + ";");↩
}↩
args[key] = value;↩
}↩
return args;↩
}↩
var gArgs = null;↩
function arg(key, defaultVal) {↩
if (gArgs === null) {↩
gArgs = parseArgs();↩
}↩
if (!(key in gArgs))↩
return defaultVal;↩
return gArgs[key];↩
}↩
function initGL(canvas) {↩
if (arg("nogl"))↩
return null;↩
var gl = null;↩
var withAA = arg("aa", false);↩
var withAlpha = arg("alpha", false);↩
var withDepth = arg("depth", false);↩
var withPremult = arg("premult", false);↩
var withPreserve = arg("preserve", false);↩
var withStencil = arg("stencil", false);↩
try {↩
var argDict = {↩
alpha: withAlpha,↩
depth: withDepth,↩
stencil: withStencil,↩
antialias: withAA,↩
premultipliedAlpha: withPremult,↩
preserveDrawingBuffer: withPreserve,↩
};↩
gl = canvas.getContext("webgl", argDict);↩
} catch(e) {}↩
return gl;↩
}↩
function rAF(func) {↩
var raf = window.requestAnimationFrame;↩
raf(func);↩
}↩
var MAX_WAIT_FOR_COMPOSITE_DELAY_MS = 500;↩
function waitForComposite(func) {↩
var isDone = false;↩
var doneFunc = function () {↩
if (isDone)↩
return;↩
isDone = true;↩
func();↩
};↩
rAF(doneFunc);↩
setTimeout(doneFunc, MAX_WAIT_FOR_COMPOSITE_DELAY_MS);↩
}↩