收藏
回答

华为Android必现:离屏webgl 渲染到 2D canvas的黑屏问题

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小游戏 Bug Canvas 客户端 7.0.3 2.6.2

- 当前 Bug 的表现(可附上截图)


注:目前只有华为的手机和平板会有这个问题。其他手机:Android,iOS都正常表现。


用离屏的webgl canvas渲染到上屏的canvas 2D环境,只有在华为的android手机上,看不到webgl的内容。


下图中,彩色的三角形和四边形,就是用webgl渲染的;但是看不到;




- 预期表现




- 复现路径


https://developers.weixin.qq.com/s/L4gO2NmP7d6B


- 提供一个最简复现 Demo


https://developers.weixin.qq.com/s/L4gO2NmP7d6B


重点代码在最后几行。


 
function tick() {
    requestAnimationFrame(tick);
    drawScene();

    animate();


    // 将3D纹理拷贝到2D纹理上。

    contextMain.clearRect(0 ,0, canvasMain.width, canvasMain.height);
   contextMain.drawImage(canvas3D, 0, 0);
    contextMain.fillStyle = "#FFFFFF"
    contextMain.fillRect(0, 0, 100, 100);
}


let contextMain = undefined

let canvasMain = undefined;
let canvas3D = undefined;
 
function webGLStart(canvas) {
 

    canvasMain = canvas;

   contextMain= canvasMain.getContext('2d');


    // 创建离屏webgl环境

    canvas3D = wx.createCanvas();
    canvas3D.width  = canvasMain.width;
    canvas3D.height = canvasMain.height
 
    initGL(canvas3D);
    initShaders();
    initBuffers();
 
    gl.clearColor(0.0, 0.0, 0.0, 1.0);
    gl.enable(gl.DEPTH_TEST);
 
    tick();
}
 
GameGlobal.alert = (...msg) => console.log("alert", ...msg);
 
webGLStart(wx.createCanvas());


最后一次编辑于  03-11  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

1 个回答

  • damonlei
    damonlei
    03-12

    请给一下华为的具体机型?

    03-12
    赞同
    回复 1
    • 陈中辉
      陈中辉
      03-12

      我们测试了三个 Honor 7x, Honor v20, BTV-DL09(平板),这三个都是相同的问题

      并且不只是2.6.2这个基础库有问题,2.3.0试了也是相同的问题

      03-12
      1
      回复