允许更多的WebGL上下文

问题描述 投票:0回答:1

我目前正在网站上列出项目。每个项目都有一个缩略图,我使用PixiJS在所有项目上添加一个着色器效果。问题是列表上有16个以上的项目,因此出现以下错误:

警告:活动WebGL上下文过多。最早的上下文将丢失。

是否有增加此限制的方法?我无法在WebGL上制作整个页面,而且用法是如此有限(没有交互作用,没有特效),以至于我认为更多的WebGL上下文不会使页面变得迟钝或类似。

javascript google-chrome webgl pixi.js
1个回答
1
投票

不是不可能增加限制。 (那么您可以编写自己的浏览器)。

要列出项目,您可以使用本问答中的解决方案

Multiple WebGL models on the same page

this article for WebGLthis article for three.js中有详细说明]

这里有3个解决方案。

  1. (最快),使用覆盖整个页面的单个WebGL画布。使用占位符元素标记要绘制对象的位置。遍历这些元素,并使用视口和剪刀设置在这些位置绘制

  2. 使用单个离屏WebGL画布。在页面上放置2D画布。将每个项目绘制到屏幕外的画布上,并使用drawImage将其绘制到正确的2D画布上。该解决方案稍微灵活一些,因为2D canvas元素可以更自由地设置样式,但比以前的解决方案要慢[]]

  3. 使用您可以自己或use a library实现的虚拟webgl上下文。不推荐(最慢),但这是一个解决方案。

  4. 注意:不建议使用多个上下文。可以在WebGL上下文之间共享纹理,顶点和着色器。这意味着,如果您在2个或更多上下文中使用同一图像,则必须为每个上下文将其加载到内存一次。类似地,对于每个上下文,必须为每个上下文编译和链接着色器。换句话说,使用多个上下文会占用更多内存并显着增加启动时间。

© www.soinside.com 2019 - 2024. All rights reserved.