是否可以在同一页面上有两个WebGL上下文?

Die*_*ego 17 webgl

我试图使用两个画布并排绘制相同的WebGL场景.可能吗?到目前为止,我还没有幸运.

这个想法如下:

  1. 我加载几何体
  2. 我设置了两个gl上下文,每个画布一个
  3. 我呼吁drawElements通过我的几何体的第一个上下文
  4. 我呼吁drawElements通过我的几何的第二个上下文

结果:只有第一次调用成功.第二个上下文gl.clear正确执行但不显示几何.

我错过了什么?这是一个规范约束?或Firefox和Safari的实现限制?

谢谢,

Toj*_*oji 22

是的,您可以在页面上拥有多个WebGL上下文,但每个上下文必须管理它自己的资源.您无法在一个上下文中创建缓冲区或纹理,然后在另一个上下文中使用它们,因此如果要渲染相同的场景,则需要使用此方法,您需要将所有资源加载两次.

这肯定是可行的,但它会非常耗费内存(正如您可能想象的那样).更好的解决方案是创建一个宽度是所需宽度的2倍的上下文,并使用gl.viewport和gl.scissor为场景的每个视图渲染一半.

或者,制作一个完整的视口大小画布,并使用剪刀/视口设置来匹配其他html元素.看到这个问答:我们如何在webgl中的两个画布中显示相同的对象?