| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 <!-- | 
|  | 2 Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
|  | 3 Use of this source code is governed by a BSD-style license that can be | 
|  | 4 found in the LICENSE file. | 
|  | 5  --> | 
|  | 6 <!DOCTYPE html> | 
|  | 7 <html> | 
|  | 8 <head> | 
|  | 9 <meta charset="utf-8"> | 
|  | 10 <link rel="stylesheet" href="../../resources/js-test-style.css"/> | 
|  | 11 <script src="../../resources/js-test-pre.js"></script> | 
|  | 12 <script src="../resources/webgl-test.js"></script> | 
|  | 13 <script src="../resources/webgl-test-utils.js"></script> | 
|  | 14 | 
|  | 15 <script> | 
|  | 16 var successfullyParsed = false; | 
|  | 17 | 
|  | 18 function init() | 
|  | 19 { | 
|  | 20     if (window.initNonKhronosFramework) { | 
|  | 21         window.initNonKhronosFramework(true); | 
|  | 22     } | 
|  | 23 | 
|  | 24     description('Verify copyTexImage2D and copyTexSubImage2D'); | 
|  | 25 | 
|  | 26     runTest(); | 
|  | 27 } | 
|  | 28 | 
|  | 29 var gl = null; | 
|  | 30 var wtu = WebGLTestUtils; | 
|  | 31 | 
|  | 32 function runTestIteration(antialias) | 
|  | 33 { | 
|  | 34     var canvas = document.getElementById( | 
|  | 35         antialias ? "antialiasOn" : "antialiasOff"); | 
|  | 36     var attribs = antialias ? { antialias: false } : undefined; | 
|  | 37     gl = wtu.create3DContext(canvas, attribs); | 
|  | 38     var program = wtu.setupTexturedQuad(gl); | 
|  | 39     var textureLoc = gl.getUniformLocation(program, "tex"); | 
|  | 40     glErrorShouldBe(gl, gl.NO_ERROR, "During Initialization"); | 
|  | 41 | 
|  | 42     gl.colorMask(1, 1, 1, 1); | 
|  | 43     gl.disable(gl.BLEND); | 
|  | 44     debug('Testing copyTexImage2D'); | 
|  | 45 | 
|  | 46     // Red canvas | 
|  | 47     gl.clearColor(1, 0, 0, 1); | 
|  | 48     gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); | 
|  | 49 | 
|  | 50     var texture = gl.createTexture(); | 
|  | 51     // Bind the texture to texture unit 0 | 
|  | 52     gl.bindTexture(gl.TEXTURE_2D, texture); | 
|  | 53     // Set up texture | 
|  | 54     gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 2, 2, 0, gl.RGBA, gl.UNSIGNED_BYTE,
      null); | 
|  | 55     gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); | 
|  | 56     gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); | 
|  | 57     gl.uniform1i(textureLoc, 0); | 
|  | 58 | 
|  | 59     var colors = [ | 
|  | 60       [1, 0, 0, 1], | 
|  | 61       [0, 1, 0, 1], | 
|  | 62       [0, 0, 1, 1], | 
|  | 63       [0.5, 0.5, 0.5, 0.5], | 
|  | 64     ]; | 
|  | 65     var count = 0; | 
|  | 66     for (var yy = -2; yy <= 2; ++yy) { | 
|  | 67       for (var xx = -2; xx <= 2; ++xx) { | 
|  | 68          for (var ii = 0; ii < 2; ++ii) { | 
|  | 69           var texColor = colors[count]; | 
|  | 70           var clearColor = colors[(count + 1) % colors.length]; | 
|  | 71           // clear to some color | 
|  | 72           gl.clearColor(texColor[0], texColor[1], texColor[2], texColor[3]); | 
|  | 73           gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); | 
|  | 74 | 
|  | 75           // copy that color to the texture. | 
|  | 76           switch (ii) { | 
|  | 77           case 0: | 
|  | 78             gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, xx, yy, 2, 2, 0); | 
|  | 79             glErrorShouldBe(gl, gl.NO_ERROR, | 
|  | 80                 "using copyTexImage2D: x =" + xx + ", y = " + yy); | 
|  | 81             break; | 
|  | 82           case 1: | 
|  | 83             gl.copyTexSubImage2D(gl.TEXTURE_2D, 0, 0, 0, xx, yy, 2, 2); | 
|  | 84             glErrorShouldBe(gl, gl.NO_ERROR, | 
|  | 85                 "using copyTexSubImage2D: x =" + xx + ", y = " + yy); | 
|  | 86             break; | 
|  | 87           } | 
|  | 88 | 
|  | 89           // clear to some other color. | 
|  | 90           gl.clearColor(clearColor[0], clearColor[1], clearColor[2], clearColor[
     3]); | 
|  | 91           gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); | 
|  | 92 | 
|  | 93           // Draw the triangles | 
|  | 94           wtu.drawQuad(gl); | 
|  | 95 | 
|  | 96           // check the rendering results | 
|  | 97           for (var iy = 0; iy < 2; ++iy) { | 
|  | 98             for (var ix = 0; ix < 2; ++ix) { | 
|  | 99               var x = xx + ix; | 
|  | 100               var y = yy + iy; | 
|  | 101               var expectedColor = (x < 0 || y < 0 || x >= 2 || y >= 2) ? | 
|  | 102                   [0,0,0,0] : | 
|  | 103                   [Math.floor(255 * texColor[0]), | 
|  | 104                    Math.floor(255 * texColor[1]), | 
|  | 105                    Math.floor(255 * texColor[2]), | 
|  | 106                    Math.floor(255 * texColor[3])]; | 
|  | 107               wtu.checkCanvasRect(gl, ix, iy, 1, 1, expectedColor, | 
|  | 108                   "" + ix + ", " + iy + " should render " + expectedColor + " (+
     /-1)", 1); | 
|  | 109             } | 
|  | 110           } | 
|  | 111           count = (count + 1) % colors.length; | 
|  | 112         } | 
|  | 113       } | 
|  | 114     } | 
|  | 115 | 
|  | 116     debug(""); | 
|  | 117 } | 
|  | 118 | 
|  | 119 function runTest(antialias) | 
|  | 120 { | 
|  | 121     debug("Testing with antialias on"); | 
|  | 122     runTestIteration(true); | 
|  | 123     debug("Testing with antialias off"); | 
|  | 124     runTestIteration(false); | 
|  | 125 | 
|  | 126     finishTest(); | 
|  | 127 } | 
|  | 128 </script> | 
|  | 129 </head> | 
|  | 130 <body onload="init()"> | 
|  | 131 <canvas id="antialiasOn" width="2px" height="2px"></canvas> | 
|  | 132 <canvas id="antialiasOff" width="2px" height="2px"></canvas> | 
|  | 133 <div id="description"></div> | 
|  | 134 <div id="console"></div> | 
|  | 135 </body> | 
|  | 136 </html> | 
| OLD | NEW | 
|---|