收藏
回答

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

框架类型 问题类型 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());


最后一次编辑于  2019-03-11
回答关注问题邀请回答
收藏

2 个回答

  • damonlei
    damonlei
    2019-03-12

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

    2019-03-12
    有用
    回复 8
    • 陈中辉
      陈中辉
      2019-03-12

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

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

      2019-03-12
      2
      回复
    • 🐂火星牛
      🐂火星牛
      发表于移动端
      2020-09-27
      一年多了,还没解决?
      2020-09-27
      回复
    • 🐂火星牛
      🐂火星牛
      发表于移动端
      2020-10-06
      是华为要解决,还是腾讯要解决?
      2020-10-06
      回复
    • 🐂火星牛
      🐂火星牛
      2020-10-08
      如果把renderer.autoClear=false;那么在华为手机上可以看到图像,但是花屏,如图。设置为true,则啥都看不见。
      2020-10-08
      回复
    • 🐂火星牛
      🐂火星牛
      2020-10-10
      算了,换个方法解决,不直接渲染到webGL的canvas,改渲染到WebGLRenderTarget上,从上面提取画面:
      2020-10-10
      回复
    查看更多(3)
  • 🐂火星牛
    🐂火星牛
    2020-09-22

    我的华为p10 plus(VKY-AL00)真机也是遇到这个问题。有解决方案了吗?

    vivo和iphone都是OK的。

    2020-09-22
    有用 1
    回复 1
    • 🐂火星牛
      🐂火星牛
      2020-12-08
      华为麦芒4,RIO-AL00这个型号,居然是OK的。
      2020-12-08
      回复
登录 后发表内容