在webGL / three.js中禁用/启用webGL上下文

时间:2017-08-28 12:37:01

标签: javascript three.js webgl

我有一个带有three.js的酷项目,一切都按预期工作。它在不同的画布上显示一些网格,这是我的问题。

该项目旨在展示许多画布,每个画布都有自己的上下文,并达到16个实时webGL上下文的致命极限。由于它想要在页面中显示更多内容,我正在寻找扭转此限制,通过在实际上不显示在所看到的页面上时禁用上下文。当用户滚动时,将禁用/启用上下文,以便我可以根据需要添加上下文。

我找到了这个函数:renderer.forceContextLoss(),我可以强制禁用上下文。但我没有找到任何重新启动的东西。我设法检测到上下文丢失,但没有检测到它的恢复

如果您对我如何实现这一目标有所了解,请随时给我一些提示。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这已在其他地方介绍,但最简单的方法是让它看起来像有多个画布只是使用一个三个实例,让它覆盖整个窗口,把地方持有者div放在你想要绘制的东西,然后使用element.getClientBoundingRect为每个要在每个元素中绘制的场景设置剪刀和视口

There's an example here

以下是该示例源自的StackOverflow中的答案

https://stackoverflow.com/a/30633132/128511

这将比使用多个画布使用更少的内存,每个画布都需要它自己的数据,它自己的着色器等......