【问题标题】:AFrame specify WebGL versionAFrame 指定 WebGL 版本
【发布时间】:2020-12-14 04:37:49
【问题描述】:

AFrame 1.1.0 使用 THREE.js 123,现在默认使用 WebGL2。
一些 AFrame 组件还不能与 WebGL2 一起使用。如果我们可以将 AFrame 与 WebGL1 一起使用,那就太好了。 THREE.js 仍然支持 WebGL1 渲染。

【问题讨论】:

    标签: three.js aframe


    【解决方案1】:

    创建渲染器时,可以pass your own canvas and context给构造函数,而不是让引擎自己创建。因此,您可以简单地从中获取<canvas> HTMLElement、request a WebGL1 context,并在初始化渲染器时使用它们:

    var myCanvas = document.getElementById('myCanvas');
    var gl = canvas.getContext('webgl');
    
    var renderer = new WebGLRenderer({
        canvas: myCanvas,
        context: gl
    });
    

    【讨论】:

    • 感谢@Marquizzo 的回复。但是,这适用于 THREE.js。你如何让它为 AFrame 工作?
    【解决方案2】:

    据 AFrame 的维护者称,目前在 1.1.0 中这是不可能的。

    AFrame 在 a-scene.js setupCanvas() 中创建自己的画布,因此您不能在已设置 webgl1 上下文的情况下传入一个画布。

    我们最终为我们自己的 AFrame 版本制作了一个补丁。您可以在此处查看使用 renderer 系统指定是否使用 WebGL2 和 WebGL1 的逻辑。

    https://github.com/8thwall/8frame/commit/533c4304f20153834a85f60a19e161e61ce71ec6

    即使有补丁,webgl1 在着色器 GLSL 兼容性方面仍然存在问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      相关资源
      最近更新 更多