/lenasys/0.1

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/0.1

« back to all changes in this revision

Viewing changes to trunk/WebGL and Benchmarking/webgl-helpers.js

  • Committer: Henrik G.
  • Date: 2013-03-26 23:22:55 UTC
  • Revision ID: henrik.gustavsson@his.se-20130326232255-ik6snyatlbkf3zs1
First seed of Lenasys ... Needs to be Organized Further

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
                //----------------------------------------------------------
 
2
                // helper Globals
 
3
          //----------------------------------------------------------          
 
4
 
 
5
    var shaderProgram;
 
6
    var gl;
 
7
 
 
8
    var fps=0;
 
9
    var fpsmax=0;
 
10
    var timecount=0;
 
11
                var fpssum=0;
 
12
                var fpscount=1;
 
13
                var benchtime=0;
 
14
 
 
15
                var username="";
 
16
    
 
17
                //----------------------------------------------------------
 
18
                // getShader collects shader and compiles it. Errors are printed in alert
 
19
          //----------------------------------------------------------          
 
20
 
 
21
    function getShader(gl, id) {
 
22
        var shaderScript = document.getElementById(id);
 
23
        if (!shaderScript) {
 
24
            return null;
 
25
        }
 
26
 
 
27
        var str = "";
 
28
        var k = shaderScript.firstChild;
 
29
        while (k) {
 
30
            if (k.nodeType == 3) {
 
31
                str += k.textContent;
 
32
            }
 
33
            k = k.nextSibling;
 
34
        }
 
35
 
 
36
        var shader;
 
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);
 
41
        } else {
 
42
            return null;
 
43
        }
 
44
 
 
45
        gl.shaderSource(shader, str);
 
46
        gl.compileShader(shader);
 
47
 
 
48
        if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
 
49
            alert(gl.getShaderInfoLog(shader));
 
50
            return null;
 
51
        }
 
52
 
 
53
        return shader;
 
54
    }
 
55
 
 
56
                //----------------------------------------------------------
 
57
                // Matrix stack variables
 
58
          //----------------------------------------------------------          
 
59
 
 
60
    var mvMatrix = mat4.create();
 
61
    var mvMatrixStack = [];
 
62
    var pMatrix = mat4.create();
 
63
 
 
64
                //----------------------------------------------------------
 
65
                // Push Matrix
 
66
          //----------------------------------------------------------          
 
67
 
 
68
    function mvPushMatrix() {
 
69
        var copy = mat4.create();
 
70
        mat4.set(mvMatrix, copy);
 
71
        mvMatrixStack.push(copy);
 
72
    }
 
73
 
 
74
                //----------------------------------------------------------
 
75
                // Pop Matrix
 
76
          //----------------------------------------------------------          
 
77
 
 
78
    function mvPopMatrix() {
 
79
        if (mvMatrixStack.length == 0) {
 
80
            throw "Invalid popMatrix!";
 
81
        }
 
82
        mvMatrix = mvMatrixStack.pop();
 
83
    }
 
84
 
 
85
                //----------------------------------------------------------
 
86
                // Startup webGL and alert if not available
 
87
          //----------------------------------------------------------          
 
88
    
 
89
    function initGL(canvas) {
 
90
        try {
 
91
            gl = canvas.getContext("experimental-webgl");
 
92
            gl.viewportWidth = canvas.width;
 
93
            gl.viewportHeight = canvas.height;
 
94
        } catch (e) {
 
95
        }if (!gl){
 
96
            alert("Could not initialise WebGL, sorry :-(");
 
97
        }
 
98
    }
 
99
 
 
100
                //----------------------------------------------------------
 
101
                // Measure fps and update div if available
 
102
          //----------------------------------------------------------          
 
103
 
 
104
                function updatefps(elapsed,fpsdiv)
 
105
                {
 
106
                                if(!isNaN(elapsed)){
 
107
                                                timecount+=(elapsed/1000.0);
 
108
                                                fpssum+=(elapsed/10.0);                                                                                 
 
109
                                } 
 
110
                                if(elapsed<1) elapsed=1;
 
111
                                
 
112
                                fpscount++;
 
113
                                fps=Math.round((100.0/(fpssum/fpscount))*10.0)/10.0;
 
114
                                                                
 
115
                                if(fps>fpsmax&&timecount>5.0) fpsmax=fps;
 
116
 
 
117
                                fpsd=document.getElementById(fpsdiv);
 
118
                                if(fpsd!=null) fpsd.innerHTML=fps;
 
119
 
 
120
                }
 
121
 
 
122
                //----------------------------------------------------------
 
123
                // Sends benchmark every X seconds
 
124
          //----------------------------------------------------------          
 
125
 
 
126
                function sendbenchmark(delay,app)
 
127
                {
 
128
                // Every 8 seconds send benchmark data to server!
 
129
                if(Math.abs(timecount-benchtime)>delay){
 
130
                        benchtime=timecount;
 
131
                                        Benchmark(username,app,fps,fpsmax,Math.round(timecount*10.0)/10.0);
 
132
                                }                                                                                                                                                               
 
133
                }
 
134
                
 
135
                //----------------------------------------------------------
 
136
                // Generate benchmark userID
 
137
          //----------------------------------------------------------          
 
138
                
 
139
                function genID(app)                                                                                                                       
 
140
                {                                                                                                                                            
 
141
                        username = localStorage.getItem("Benchuser"); //Try to fetch username data                                                             
 
142
                        if (username==null||username==""){
 
143
                        var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
 
144
                                        text="";
 
145
                        for( var i=0; i < 16; i++ ) text += possible.charAt(Math.floor(Math.random() * possible.length));
 
146
                                        username=text;
 
147
                                        localStorage.setItem("Benchuser",username);
 
148
                        }else{
 
149
      }
 
150
     
 
151
      Benchmark(username,app,fps,fpsmax,Math.round(timecount*10.0)/10.0);                                                                                                                                    
 
152
    }                                                                                                                                            
 
153
 
 
154
                //----------------------------------------------------------
 
155
                // Send Benchmark using httpajax.js
 
156
          //----------------------------------------------------------          
 
157
 
 
158
                function Benchmark(username,app,fps,maxfps,runtime)
 
159
                {
 
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);                             
 
166
                }                       
 
167
                
 
 
b'\\ No newline at end of file'