Home | History | Annotate | Download | only in files
      1 <!DOCTYPE html>
      2 <!--
      3  * Copyright 2014 The Chromium OS Authors. All rights reserved.
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6 -->
      7 
      8 <html>
      9     <head>
     10     <title>WebGL Clear Test</title>
     11     <script type="text/javascript" src="tdl/base.js"></script>
     12     <script type="text/javascript">
     13         tdl.require('tdl.fps');
     14         tdl.require('tdl.webgl');
     15 
     16         window.onload = initialize;
     17 
     18         var g_fpsTimer; // object to measure frames per second
     19 
     20         function initialize() {
     21             var then = 0.0;
     22             var last = 0.0;
     23             var fpsElem = document.getElementById('fps');
     24             var canvas = document.getElementById('canvas');
     25             var w = 1024;
     26             var h = 1024;
     27 
     28             canvas.width = w;
     29             canvas.height = h;
     30 
     31             tdl.fps.NUM_FRAMES_TO_AVERAGE = 120;
     32             g_fpsTimer = new tdl.fps.FPSTimer();
     33 
     34             gl = tdl.webgl.setupWebGL(canvas, {alpha:false,antialias:false});
     35             if (!gl) {
     36                 return false;
     37             }
     38 
     39             gl.clearColor(
     40                 Math.random(), Math.random(), Math.random(), 1.0);
     41             gl.viewport(0, 0, w, h);
     42 
     43             function render() {
     44                 tdl.webgl.requestAnimationFrame(render, canvas);
     45 
     46                 var now = (new Date()).getTime();
     47                 var elapsedTime = 0.0;
     48                 if (then != 0.0) {
     49                     elapsedTime = now - then;
     50                 }
     51                 then = now;
     52 
     53                 g_fpsTimer.update(elapsedTime * 0.001);
     54                 fpsElem.innerHTML = g_fpsTimer.averageFPS;
     55 
     56                 // Regulate how often we change the clear color over time. If we
     57                 // were to change the color every frame then, depending on the
     58                 // FPS rate, this would potentially happen very very fast and is
     59                 // really irritating to watch.  I'm not sure how much impact
     60                 // changing the color really has on performance, if any.
     61                 // Nonetheless, changing the color periodically gives us a
     62                 // visual cue that somethings actually happening.
     63                 if (now - last > 500) {
     64                     gl.clearColor(
     65                         Math.random(), Math.random(), Math.random(), 1.0);
     66                     last = now;
     67                 }
     68 
     69                 // Clear color and depth buffers
     70                 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
     71             }
     72 
     73             render();
     74 
     75             return true;
     76         }
     77     </script>
     78   </head>
     79   <body>
     80     <div>fps: <span id="fps"></span></div>
     81     <canvas id="canvas" width="1024" height="1024" style="width: 100%; height: 100%;"></canvas>
     82   </body>
     83 </html>
     84