1
//----------------------------------------------------------
3
//----------------------------------------------------------
17
//----------------------------------------------------------
18
// getShader collects shader and compiles it. Errors are printed in alert
19
//----------------------------------------------------------
21
function getShader(gl, id) {
22
var shaderScript = document.getElementById(id);
28
var k = shaderScript.firstChild;
30
if (k.nodeType == 3) {
37
if (shaderScript.type == "x-shader/x-fragment") {
38
shader = gl.createShader(gl.FRAGMENT_SHADER);
39
} else if (shaderScript.type == "x-shader/x-vertex") {
40
shader = gl.createShader(gl.VERTEX_SHADER);
45
gl.shaderSource(shader, str);
46
gl.compileShader(shader);
48
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
49
alert(gl.getShaderInfoLog(shader));
56
//----------------------------------------------------------
57
// Matrix stack variables
58
//----------------------------------------------------------
60
var mvMatrix = mat4.create();
61
var mvMatrixStack = [];
62
var pMatrix = mat4.create();
64
//----------------------------------------------------------
66
//----------------------------------------------------------
68
function mvPushMatrix() {
69
var copy = mat4.create();
70
mat4.set(mvMatrix, copy);
71
mvMatrixStack.push(copy);
74
//----------------------------------------------------------
76
//----------------------------------------------------------
78
function mvPopMatrix() {
79
if (mvMatrixStack.length == 0) {
80
throw "Invalid popMatrix!";
82
mvMatrix = mvMatrixStack.pop();
85
//----------------------------------------------------------
86
// Startup webGL and alert if not available
87
//----------------------------------------------------------
89
function initGL(canvas) {
91
gl = canvas.getContext("experimental-webgl");
92
gl.viewportWidth = canvas.width;
93
gl.viewportHeight = canvas.height;
96
alert("Could not initialise WebGL, sorry :-(");
100
//----------------------------------------------------------
101
// Measure fps and update div if available
102
//----------------------------------------------------------
104
function updatefps(elapsed,fpsdiv)
107
timecount+=(elapsed/1000.0);
108
fpssum+=(elapsed/10.0);
110
if(elapsed<1) elapsed=1;
113
fps=Math.round((100.0/(fpssum/fpscount))*10.0)/10.0;
115
if(fps>fpsmax&&timecount>5.0) fpsmax=fps;
117
fpsd=document.getElementById(fpsdiv);
118
if(fpsd!=null) fpsd.innerHTML=fps;
122
//----------------------------------------------------------
123
// Sends benchmark every X seconds
124
//----------------------------------------------------------
126
function sendbenchmark(delay,app)
128
// Every 8 seconds send benchmark data to server!
129
if(Math.abs(timecount-benchtime)>delay){
131
Benchmark(username,app,fps,fpsmax,Math.round(timecount*10.0)/10.0);
135
//----------------------------------------------------------
136
// Generate benchmark userID
137
//----------------------------------------------------------
141
username = localStorage.getItem("Benchuser"); //Try to fetch username data
142
if (username==null||username==""){
143
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
145
for( var i=0; i < 16; i++ ) text += possible.charAt(Math.floor(Math.random() * possible.length));
147
localStorage.setItem("Benchuser",username);
151
Benchmark(username,app,fps,fpsmax,Math.round(timecount*10.0)/10.0);
154
//----------------------------------------------------------
155
// Send Benchmark using httpajax.js
156
//----------------------------------------------------------
158
function Benchmark(username,app,fps,maxfps,runtime)
160
var paramstr='User='+escape(username);
161
paramstr+="&App="+escape(app);
162
paramstr+="&Fps="+escape(fps);
163
paramstr+="&MaxFps="+escape(maxfps);
164
paramstr+="&RunTime="+escape(runtime);
165
AjaxService("Benchy.php",paramstr);
b'\\ No newline at end of file'