Page 1 of 1

直接方法适用于少量画布元素但

Posted: Wed Dec 11, 2024 6:19 am
by rumiseoexpate5
是,如果您尝试添加太多,则会遇到一个问题:一次可以处于活动状态的 WebGL 上下文数量是有限的。此限制不是固定的。它取决于您的浏览器、设备和任何其他使用 GPU 的活动进程。总的来说,限制可能低至 2,也可能高达 16。

每个 WebGL 上下文本质上都是一个独立的图形应用程序。无论你如何使用它,它都会消耗一定量的资源。你越接近上下文限制,页面性能就会变得越差。更糟糕的是,超过限制会导致较旧的上下文丢失。如果你想渲染丢失的上下文,必须先重新创建它,这将导致另一个上下文丢失。这会给性能和冷却风扇带来进一步的压力。

多年来,已经出现了许多解决此问题的方法。最常见 多米尼加共和国 whatsapp 号码数据 5 的方法是创建一个具有固定位置的透明 WebGL 画布,其大小仅覆盖浏览器视口。您无需在 DOM 中放置大量画布元素,而是选择要使用 WebGL 渲染的某些元素。然后,使用它们的客户端边界矩形在 WebGL 场景中定位对象。随着页面滚动,画布本身保持固定,但图形会更新以匹配滚动进度。原始元素被隐藏并替换为其 WebGL 对应元素。

Image


使用透明画布覆盖的构图

这种方法用于推动特定元素的呈现超越标准浏览器功能。常见用例包括图像和文本效果,正如东京数字机构Homunculus的主页上所见。另一个例子是游戏工作室Shape Farm的网站。在这里,WebGL 用于图像和文本效果,以及各种令人愉悦的装饰元素。

这种方法的优点是您可以使用 DOM 进行布局,包括响应式媒体查询,同时挑选哪些元素获得 WebGL 处理。缺点是所有 WebGL 对象都必须位于相同的 z 索引上,从而限制了布局选项。更大的问题是本机页面滚动速度比渲染 WebGL 内容的requestAnimationFrame循环更快。这会导致 WebGL 对象明显落后于 DOM 元素,从而导致不必要的布局偏移。解决这个问题的唯一可靠方法是接管本机页面滚动,通常称为滚动劫持。这种技术经常因导致可用性和可访问性问题而受到批评。Squarespace 模板种类繁多,以及 CMS 的直接编辑功能,使得这种方法对于我们的用例来说更加不切实际。