1 <!DOCTYPE html> 2 <html> 3 <body> 4 <script src="../resources/runner.js"></script> 5 <script src="resources/canvas_runner.js"></script> 6 <script> 7 8 var sourceCanvas3D = document.createElement('canvas'); 9 var sourceCtx = sourceCanvas3D.getContext('experimental-webgl'); 10 var destCanvas3D = document.createElement('canvas'); 11 var destCtx = destCanvas3D.getContext('experimental-webgl'); 12 if (!sourceCtx || !destCtx) 13 CanvasRunner.logFatalError("\nWebGL is not supported or enabled on this platform!\n"); 14 var tex = null; 15 16 function setSize(width, height) { 17 sourceCanvas3D.width = width; 18 sourceCanvas3D.height = height; 19 destCanvas3D.width = width; 20 destCanvas3D.height = height; 21 } 22 23 function rand(range) { 24 return Math.floor(Math.random() * range); 25 } 26 27 function renderWebGL(gl) { 28 gl.disable(gl.SCISSOR_TEST); 29 gl.clear(gl.COLOR_BUFER_BIT); 30 gl.enable(gl.SCISSOR_TEST); 31 gl.scissor(rand(1024), rand(1024), rand(1024), rand(1024)); 32 gl.clearColor(Math.random(), Math.random(), Math.random(), 1); 33 gl.clear(gl.COLOR_BUFFER_BIT); 34 } 35 36 function preRun() { 37 tex = destCtx.createTexture(); 38 destCtx.bindTexture(destCtx.TEXTURE_2D, tex); 39 } 40 41 function doRun() { 42 destCtx.texImage2D(destCtx.TEXTURE_2D, 0, destCtx.RGBA, destCtx.RGBA, destCtx.UNSIGNED_BYTE, sourceCanvas3D); 43 } 44 45 function ensureComplete() { 46 destCtx.readPixels(0, 0, 1, 1, sourceCtx.RGBA, sourceCtx.UNSIGNED_BYTE, new Uint8Array(4)); 47 } 48 49 function postRun() { 50 destCtx.deleteTexture(tex); 51 } 52 53 window.onload = function () { 54 setSize(1024, 1024); 55 renderWebGL(sourceCtx); 56 CanvasRunner.start({ 57 description: "This benchmark checks the speed on uploading WebGL(1024x1024) to WebGL Texture(1024x1024).", 58 preRun: preRun, 59 doRun: doRun, 60 ensureComplete: ensureComplete, 61 postRun: postRun}); 62 } 63 64 </script> 65 </body> 66 </html> 67