blob: 4b18545543ea6be3d3bfe90d76628d37f6588357 [file] [edit]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.js"></script>
<script src="resources/webgl-test.js"></script>
<script src="resources/webgl-test-utils.js"></script>
<script id="quadFragmentShader" type="x-shader/x-fragment">
precision highp float;
varying vec2 texCoord;
void main() {
gl_FragColor = vec4(texCoord, 0.5, 1.0);
}
</script>
<script>
"use strict";
var wtu = WebGLTestUtils;
function drawCanvasAsTexture(dest, source)
{
const gl = wtu.create3DContext(dest);
const program = wtu.setupSimpleTextureProgram(gl);
const samplerLoc = gl.getUniformLocation(program, "tex");
const buffers = wtu.setupUnitQuad(gl);
const tex = gl.createTexture();
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
gl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE);
gl.bindTexture(gl.TEXTURE_2D, tex);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
gl.uniform1i(samplerLoc, 0);
wtu.clearAndDrawUnitQuad(gl);
}
function runTest(canvas, premultipliedAlpha)
{
const canvasGL = document.createElement("canvas");
canvasGL.width = 256;
canvasGL.height = 256;
const gl = wtu.create3DContext(canvasGL, { premultipliedAlpha: premultipliedAlpha });
const program = wtu.setupProgram(gl,
[wtu.setupSimpleTextureVertexShader(gl), "quadFragmentShader"],
['vPosition', 'texCoord0']);
const quadParameters = wtu.setupUnitQuad(gl);
wtu.clearAndDrawUnitQuad(gl);
drawCanvasAsTexture(canvas, canvasGL);
}
function init()
{
runTest(document.getElementById("canvas0"), true);
runTest(document.getElementById("canvas1"), false);
finishTest();
}
</script>
</head>
<body onload="init()">
<canvas id="canvas0" width="256" height="256"></canvas>
<canvas id="canvas1" width="256" height="256"></canvas>
</body>
</html>