我有一个带有three.js的酷项目,一切都按预期工作。它在不同的画布上显示一些网格,这是我的问题。
该项目旨在展示许多画布,每个画布都有自己的上下文,并达到16个实时webGL上下文的致命极限。由于它想要在页面中显示更多内容,我正在寻找扭转此限制,通过在实际上不显示在所看到的页面上时禁用上下文。当用户滚动时,将禁用/启用上下文,以便我可以根据需要添加上下文。
我找到了这个函数:renderer.forceContextLoss()
,我可以强制禁用上下文。但我没有找到任何重新启动的东西。我设法检测到上下文丢失,但没有检测到它的恢复
如果您对我如何实现这一目标有所了解,请随时给我一些提示。
提前致谢!
答案 0 :(得分:0)
这已在其他地方介绍,但最简单的方法是让它看起来像有多个画布只是使用一个三个实例,让它覆盖整个窗口,把地方持有者div放在你想要绘制的东西,然后使用element.getClientBoundingRect
为每个要在每个元素中绘制的场景设置剪刀和视口
以下是该示例源自的StackOverflow中的答案
https://stackoverflow.com/a/30633132/128511
这将比使用多个画布使用更少的内存,每个画布都需要它自己的数据,它自己的着色器等......