【发布时间】:2016-11-15 01:35:39
【问题描述】:
在knitr 中使用rgl,用户可以编写包含多个WebGL 场景的文档在不同的显示中。每一个都是通过创建一个画布,获取一个与之关联的 WebGL 上下文,然后进行一系列 WebGL 绘图来创建的。
用户可以在单个 HTML 页面中请求任意数量的显示,最终他们会耗尽上下文,并且(在 Firefox 中)控制台将显示
Exceeded 16 live WebGL contexts for this principal
我会得到 WebGLcontextlost 事件。当你滚动页面时,所有早期的显示都是空白的,只有后面的显示。
如何要求恢复当前显示在窗口中的那些?
编辑添加:此问题的变体:如何将画布设置为仅在滚动到视图中时才尝试绘制自己?在典型情况下,一次只能看到一个或两个上下文,因此绘制两个上下文应该没问题。但是当发生这种情况时需要告知代码。
【问题讨论】:
-
其他一些可能的解决方案。 Use one canvas and just render viewports。 Using 1 WebGL canvas and multiple non-webgl canvases。至于只有当一个上下文是在视图中看到。至于仅在屏幕上渲染,请参阅github.com/greggman/requestanimationframe-fix.js
标签: webgl