| OLD | NEW |
| (Empty) | |
| 1 <!DOCTYPE html> |
| 2 <html> |
| 3 <head> |
| 4 <script src="./resources/webgl-test-utils-full.js"></script> |
| 5 <script src="./resources/tex-image-and-sub-image-utils.js"></script> |
| 6 <script src="../../../resources/js-test.js"></script> |
| 7 </head> |
| 8 |
| 9 <script id='myWorker' type='text/worker'> |
| 10 self.onmessage = function(e) { |
| 11 var canvas = new OffscreenCanvas(128, 128); |
| 12 var gl = canvas.getContext('webgl'); |
| 13 gl.clearColor(1.0, 1.0, 0.0, 1.0); |
| 14 gl.clear(gl.COLOR_BUFFER_BIT); |
| 15 |
| 16 var image = canvas.transferToImageBitmap(); |
| 17 self.postMessage({bitmap: image}, [image]); |
| 18 }; |
| 19 </script> |
| 20 |
| 21 <script> |
| 22 window.jsTestIsAsync = true; |
| 23 |
| 24 var wtu = WebGLTestUtils; |
| 25 var tiu = TexImageUtils; |
| 26 var internalFormat = "RGBA"; |
| 27 var pixelFormat = "RGBA"; |
| 28 var pixelType = "UNSIGNED_BYTE"; |
| 29 var blob = new Blob([document.getElementById('myWorker').textContent]); |
| 30 var worker = new Worker(URL.createObjectURL(blob)); |
| 31 var bitmap; |
| 32 |
| 33 var canvas = document.createElement("canvas"); |
| 34 canvas.width = 128; |
| 35 canvas.height = 128; |
| 36 var ctx = canvas.getContext('bitmaprenderer'); |
| 37 |
| 38 var width = 32; |
| 39 var height = 32; |
| 40 var canvas2d = document.createElement("canvas"); |
| 41 canvas2d.width = width; |
| 42 canvas2d.height = height; |
| 43 var gl = canvas2d.getContext('webgl'); |
| 44 gl.clearColor(0,0,0,1); |
| 45 gl.clearDepth(1); |
| 46 gl.disable(gl.BLEND); |
| 47 |
| 48 function checkCanvas(buf, width, height) |
| 49 { |
| 50 for (var i = 0; i < width * height; i++) { |
| 51 if (buf[i * 4] != 255 || buf[i * 4 + 1] != 255 || |
| 52 buf[i * 4 + 2] != 0 || buf[i * 4 + 3] != 255) { |
| 53 testFailed("This pixel should be red, but it is: [" + buf[i * 4] + "
, " + |
| 54 buf[i * 4 + 1] + ", " + buf[i * 4 + 2] + ", " + buf[i * 4 + 3] +
"]."); |
| 55 finishJSTest(); |
| 56 } |
| 57 } |
| 58 } |
| 59 |
| 60 function runTestOnBindingTarget(bindingTarget, program, bitmap) |
| 61 { |
| 62 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); |
| 63 // Enable writes to the RGBA channels |
| 64 gl.colorMask(1, 1, 1, 0); |
| 65 var texture = gl.createTexture(); |
| 66 // Bind the texture to texture unit 0 |
| 67 gl.bindTexture(bindingTarget, texture); |
| 68 // Set up texture parameters |
| 69 gl.texParameteri(bindingTarget, gl.TEXTURE_MIN_FILTER, gl.NEAREST); |
| 70 gl.texParameteri(bindingTarget, gl.TEXTURE_MAG_FILTER, gl.NEAREST); |
| 71 |
| 72 var targets = [gl.TEXTURE_2D]; |
| 73 // Upload the image into the texture |
| 74 for (var tt = 0; tt < targets.length; ++tt) { |
| 75 gl.texImage2D(targets[tt], 0, gl[internalFormat], gl[pixelFormat], gl[pi
xelType], bitmap); |
| 76 } |
| 77 for (var tt = 0; tt < targets.length; ++tt) { |
| 78 // Draw the triangles |
| 79 gl.clearColor(0, 0, 0, 1); |
| 80 gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); |
| 81 gl.drawArrays(gl.TRIANGLES, 0, 6); |
| 82 |
| 83 var buf = new Uint8Array(width * height * 4); |
| 84 gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, buf); |
| 85 checkCanvas(buf, width, height); |
| 86 } |
| 87 } |
| 88 |
| 89 worker.onmessage = function(msg) { |
| 90 bitmap = msg.data.bitmap; |
| 91 ctx.transferFromImageBitmap(bitmap); |
| 92 var program = tiu.setupTexturedQuad(gl, internalFormat); |
| 93 runTestOnBindingTarget(gl.TEXTURE_2D, program, bitmap); |
| 94 testPassed("This test passed"); |
| 95 finishJSTest(); |
| 96 } |
| 97 worker.postMessage(""); |
| 98 |
| 99 </script> |
| 100 </html> |
| OLD | NEW |