function isFlippedTexture()
{
var canvas = document.createElement('canvas');
canvas.width = 1;
canvas.height = 2;
var gl = canvas.getContext("experimental-webgl");
gl.clearColor(1, 1, 1, 1);
gl.clear(gl.COLOR_BUFFER_BIT);
var prog = gl.createProgram();
var vss = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vss, "attribute vec3 pos;void main() {gl_Position = vec4(pos, 1.0);}");
gl.compileShader(vss);
gl.attachShader(prog, vss);
var fss = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(fss, "void main() {gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);}");
gl.compileShader(fss);
gl.attachShader(prog, fss);
gl.linkProgram(prog);
gl.useProgram(prog);
gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer());
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, 0, 1, -1, 0, -1, 0, 0, 1, 0, 0]), gl.STATIC_DRAW);
var attr = gl.getAttribLocation(prog, "pos");
gl.enableVertexAttribArray(attr);
gl.vertexAttribPointer(attr, 3, gl.FLOAT, false, 0, 0);
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
var tex_small = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, tex_small);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, gl.canvas);
gl.bindTexture(gl.TEXTURE_2D, null);
var fbo = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, tex_small, 0);
var pixels = new Uint8Array(1 * 2 * 4);
gl.readPixels( 0, 0, 1, 2, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
gl.deleteTexture(tex_small);
return pixels[0] == 0;
}[/code:1t7nmz4j]