57 lines
2.2 KiB
JavaScript
57 lines
2.2 KiB
JavaScript
function testTransferToImageBitmap(webglContextVersion, bitmap) {
|
|
var internalFormat = "RGBA";
|
|
var pixelFormat = "RGBA";
|
|
var pixelType = "UNSIGNED_BYTE";
|
|
|
|
var width = 32;
|
|
var height = 32;
|
|
var canvas = document.createElement("canvas");
|
|
canvas.width = width;
|
|
canvas.height = height;
|
|
var gl = WebGLTestUtils.create3DContext(canvas);
|
|
gl.clearColor(0,0,0,1);
|
|
gl.clearDepth(1);
|
|
gl.disable(gl.BLEND);
|
|
|
|
TexImageUtils.setupTexturedQuad(gl, internalFormat);
|
|
|
|
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
// Enable writes to the RGBA channels
|
|
gl.colorMask(1, 1, 1, 0);
|
|
var texture = gl.createTexture();
|
|
// Bind the texture to texture unit 0
|
|
gl.bindTexture(gl.TEXTURE_2D, texture);
|
|
// Set up texture parameters
|
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
|
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
|
|
|
|
var targets = [gl.TEXTURE_2D];
|
|
// Upload the image into the texture
|
|
for (var tt = 0; tt < targets.length; ++tt) {
|
|
gl.texImage2D(targets[tt], 0, gl[internalFormat], gl[pixelFormat], gl[pixelType], bitmap);
|
|
}
|
|
for (var tt = 0; tt < targets.length; ++tt) {
|
|
// Draw the triangles
|
|
gl.clearColor(0, 0, 0, 1);
|
|
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
|
|
gl.drawArrays(gl.TRIANGLES, 0, 6);
|
|
|
|
var buf = new Uint8Array(width * height * 4);
|
|
gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, buf);
|
|
_checkCanvas(buf, width, height, webglContextVersion);
|
|
}
|
|
}
|
|
|
|
function _checkCanvas(buf, width, height, webglContextVersion)
|
|
{
|
|
for (var i = 0; i < width * height; i++) {
|
|
if (buf[i * 4] != 255 || buf[i * 4 + 1] != 255 ||
|
|
buf[i * 4 + 2] != 0 || buf[i * 4 + 3] != 255) {
|
|
testFailed("OffscreenCanvas." + webglContextVersion +
|
|
": This pixel should be [255, 255, 0, 255], but it is: [" + buf[i * 4] + ", " +
|
|
buf[i * 4 + 1] + ", " + buf[i * 4 + 2] + ", " + buf[i * 4 + 3] + "].");
|
|
return;
|
|
}
|
|
}
|
|
testPassed("TransferToImageBitmap test on OffscreenCanvas." + webglContextVersion + " passed");
|
|
}
|