cocos creator 1.8.1下的截屏图片失败

近期用了论坛里经验分享:Creator 原生平台截屏方案的方法进行截图,在1.8.1版本下做了点修改,想在webgl下生成图片,然后在web浏览器端显示,但是发现图片是全透明的。
我这边采用了下面的方式获取像素数据:

            const texture = renderTexture.getSprite().getTexture();

            // Create a framebuffer backed by the texture
            const framebuffer = gl.createFramebuffer();
            gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
            gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture._webTextureObj, 0);
    
            // Read the contents of the framebuffer
            const data = new Uint8Array(width * height * 4);
            gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, data);
    
            gl.deleteFramebuffer(framebuffer);

结果是data里面的像素数据全是0。请问是我的用法不对吗?还是别的问题?
下面是代码压缩包:
ScreenCaptureDemo.zip (448.0 KB)

const target = this.node.getComponent(cc.Canvas);
const width = 720;
const height = 1280;
const renderTexture = new cc.RenderTexture(width, height);
renderTexture.begin();
target.node._sgNode.visit();
renderTexture.end();
//
const canvas = document.createElement(“canvas”);
const ctx = canvas.getContext(“2d”);
canvas.width = width;
canvas.height = height;
if (cc._renderType === cc.game.RENDER_TYPE_CANVAS) {
const texture = renderTexture.getSprite().getTexture();
const image = texture.getHtmlElementObj();
ctx.drawImage(image, 0, 0);
} else if (cc._renderType === cc.game.RENDER_TYPE_WEBGL) {
const buffer = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, buffer);
const texture = renderTexture.getSprite().getTexture()._glID;
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
const data = new Uint8Array(width * height * 4);
gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, data);
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
const rowBytes = width * 4;
for (let row = 0; row < height; row++) {
const srow = height - 1 - row;
const data2 = new Uint8ClampedArray(data.buffer, srow * width * 4, rowBytes);
const imageData = new ImageData(data2, width, 1);
ctx.putImageData(imageData, 0, row);
}
}

const url =  canvas.toDataURL("image/png");
cc.log("url", url);

return url;