收藏
回答

ios 获取Max Texture Units只有8?

基础库:2.16.0

真机预览设备:iphone12pro、ipad(第6代)

代码:

    wx.createSelectorQuery()
      .select('#webgl')
      .node()
      .exec((res) => {
        const canvas = res[0].node
        canvas.getContext('webgl').getParameter(34930); // 获取Gpu最大Texture Units值
      })


输出结果为8

正常gpu最大Texture Units都是16,没道理我的ios设备都是8,但是安卓手机是16

于是我在小程序插入webview网页输出这个值,得到的竟然是16

直接导致我的材质效果在webview能跑起来,但是在小程序原生却不行,怎么回事?


补充获取gl.SHADING_LANGUAGE_VERSION结果:

小程序webview:WebGL GLSL ES 1.0 (1.0)

小程序原生:WebGL 1.0 (OpenGL ES 2.0 WeChat)

都是WebGL1.0


最后一次编辑于  2021-04-17
回答关注问题邀请回答
收藏

2 个回答

  • Cynthia®
    Cynthia®
    2021-04-19

    MAX_COMBINED_TEXTURE_IMAGE_UNITS得到的也是8,而webview是32

    目测是小程序对ios webgl支持问题,暂时无解

    只能等官方哪天大发慈悲去升级,目前只能放弃小程序改回用网页渲染了

    希望官方可以优化下webgl (wechat)的文档,避免浪费时间

    2021-04-19
    有用
    回复 1
    • Cynthia®
      Cynthia®
      2021-04-19
      补充另外一种解决方法就是尽量把图片合并到一张图,把所有通道都利用上(虽然对我的情况于事无补)
      2021-04-19
      回复
  • Riven.
    Riven.
    2021-04-16

    你好,麻烦提供出现问题的微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    2021-04-16
    有用
    回复 1
    • Cynthia®
      Cynthia®
      2021-04-17
      这么简单的代码还要给代码片段这么麻烦吗,而且webview的例子也不好给,是不是小程序只针对ios做了性能限制但是又没有告诉开发者,有没有方法去掉这个限制,毕竟8太离谱了
      2021-04-17
      回复
登录 后发表内容
问题标签