|
1 "use strict"; |
|
2 |
|
3 function parseArgs() { |
|
4 var query = window.location.search.substring(1); |
|
5 |
|
6 var split = query.split("&"); |
|
7 |
|
8 var args = {} |
|
9 for (var i = 0; i < split.length; i++) { |
|
10 var pair = split[i].split("="); |
|
11 |
|
12 var key = pair[0]; |
|
13 var value = true; |
|
14 if (pair.length >= 2) { |
|
15 eval("value = " + decodeURIComponent(pair[1]) + ";"); |
|
16 } |
|
17 |
|
18 args[key] = value; |
|
19 } |
|
20 |
|
21 return args; |
|
22 } |
|
23 |
|
24 var gArgs = null; |
|
25 function arg(key) { |
|
26 if (gArgs === null) { |
|
27 gArgs = parseArgs(); |
|
28 } |
|
29 |
|
30 var ret = gArgs[key]; |
|
31 if (ret === undefined) |
|
32 ret = false; |
|
33 |
|
34 return ret; |
|
35 } |
|
36 |
|
37 function initGL(canvas) { |
|
38 if (arg("nogl")) |
|
39 return null; |
|
40 |
|
41 var gl = null; |
|
42 |
|
43 var withAA = arg("aa"); |
|
44 var withAlpha = arg("alpha"); |
|
45 var withDepth = arg("depth"); |
|
46 var withPremult = arg("premult"); |
|
47 var withPreserve = arg("preserve"); |
|
48 var withStencil = arg("stencil"); |
|
49 |
|
50 try { |
|
51 var argDict = { |
|
52 alpha: withAlpha, |
|
53 depth: withDepth, |
|
54 stencil: withStencil, |
|
55 antialias: withAA, |
|
56 premultipliedAlpha: withPremult, |
|
57 preserveDrawingBuffer: withPreserve, |
|
58 }; |
|
59 gl = canvas.getContext("experimental-webgl", argDict); |
|
60 } catch(e) {} |
|
61 |
|
62 return gl; |
|
63 } |
|
64 |
|
65 function rAF(func) { |
|
66 var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame; |
|
67 raf(func); |
|
68 } |
|
69 |
|
70 var MAX_WAIT_FOR_COMPOSITE_DELAY_MS = 500; |
|
71 |
|
72 function waitForComposite(func) { |
|
73 var isDone = false; |
|
74 var doneFunc = function () { |
|
75 if (isDone) |
|
76 return; |
|
77 isDone = true; |
|
78 func(); |
|
79 }; |
|
80 |
|
81 rAF(doneFunc); |
|
82 setTimeout(doneFunc, MAX_WAIT_FOR_COMPOSITE_DELAY_MS); |
|
83 } |