允许更多 WebGL 上下文

2023-11-26

我目前正在开发一个包含项目列表的网站。每个项目都有一个缩略图,我使用以下方法为所有项目添加着色器效果PixiJS。问题是列表中的项目超过 16 个,因此我收到以下错误:

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

有没有办法提高这个限制?我无法在 WebGL 上制作整个页面,并且使用非常有限(没有交互,精简效果),我认为更多的 WebGL 上下文不会使页面滞后或发生其他情况。


并非不可能增加限制。 (你可以编写自己的浏览器)。

要制作项目列表,您可以使用此问答中的解决方案

同一页面上的多个 WebGL 模型

详细说明在本文针对 WebGL and 本文针对 Three.js

这里有3个解决方案。

  1. (最快)使用覆盖页面的单个 WebGL 画布。使用占位符元素来标记要绘制内容的位置。循环遍历那些调用的元素element.getBoundingClientRect并使用视口和剪刀设置在这些地方进行绘制,仅绘制可见的部分(有些可能在屏幕外,不需要绘制)。这是上面链接中显示的解决方案。

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

    注意:最好将 WebGL 画布设置为最大 2D 画布的大小,然后对于每个 2D 画布,将 gl.viewport 设置为该 2D 画布的大小,然后使用完整形式drawImage选择 WebGL 画布的正确大小部分来绘制当前 2D 画布。我认为调整画布大小是一项繁重的操作。换句话说:

    for each 2D canvas
       webgl canvas size = max(webgl canvas size, 2D canvas size) // for each dimension
       gl.viewport(0, 0, 2D canvas size);
       draw scene for canvas
       ctx.drawImage(
           0, 0, 2D canvas size, 
           0, webgl canvas height - 2d canvas height, 2D canvas size)
    
  3. 使用虚拟 webgl 上下文,您可以自己实现或使用图书馆。不推荐(最慢),但这是一个快速的解决方案。

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

不幸的是,由于您标记了 WebGL 和 pixi.js 的问题,因此这个答案可能与您无关。我不知道这在 pixi.js 中是否可行。我没有看到任何文档来建议如何有效地做到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

允许更多 WebGL 上下文 的相关文章

  • 将 OoXml 插入单词抛出错误:未知

    我一直在尝试通过office js将OOXML插入到word文档的正文内容中insertOoXML 方法 我什至尝试过最简单的实现 认为我在尝试替换 XML 本身中的 fieldCodes 时做了一些不正确的事情 所有结果都是这样Error
  • 从数据 URI 解码 QR 码

    我尝试从数据 uri 中解码二维码 var dataUri data image gif base64 R0lGODdh9gD2AIAAAAAAAP ywAAAAA9gD2AAAC decodeQrCode dataUri cb 我已经尝试
  • 不和谐机器人 |不和谐.js |类型错误:无法读取未定义的属性“长度”

    我正在制作一个 Discord 机器人 并且正在使用 CodeLyon 的视频作为参考 该错误位于我的 message js 文件中 该文件包含以下内容 require dotenv config create cooldowns map
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • 使用模数按字母顺序对列表进行排序

    我在获取元素列表并按字母顺序对它们进行排序方面没有任何问题 但我很难理解如何使用模数来做到这一点 更新 这是按我的方式工作的代码 但是 我更喜欢下面提供的答案的可重用性 因此接受了该答案
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy
  • 如何监听 jQuery AJAX 请求?

    以下两种实现 ajaxRequest 1 2 的方法应该是等效的 话说回来 为什么验证回调已执行的单元测试 3 在 1 中成功而在 2 中失败 我应该如何重写测试 3 来监视 2 中的成功回调 如果我尝试stub jQuery ajax使用
  • Node.js:如何在检索数据(块)时关闭响应/请求

    我正在用 node js 构建一个应用程序 它加载多个页面并分析内容 因为 node js 发送块 所以我可以分析这些块 如果一个块包含例如索引 nofollow 我想关闭该连接并继续其余部分 var host example com to
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • 如何在react-native中获取Text组件的onPress值

    我是一名新的 React Native 开发人员 我想使用 onPress 获取 Text 组件的值并将其传递给函数
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 后台脚本 chrome.tabs 在 chrome 扩展中未定义?

    我试过这个 背景 js chrome browserAction onClicked addListener function activeTab chrome tabs query active true currentWindow tr
  • 如何在类似控制台的环境中运行 JavaScript?

    我正在尝试遵循这里的示例 http eloquentjavascript net chapter2 html http eloquentjavascript net chapter2 html and print blah 在浏览器中运行时
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比
  • fullCalendar 未显示正确的结束日期

    我正在看调试页面 http jsbin com wukofacaxu edit js outputFullCalendar 官方网站的 我想安排一个活动时间为 22 09 2015 至 30 09 2015 dd mm yyyy 但它只显示

随机推荐

  • 理解 Boost.spirit 的字符串解析器

    include
  • 多个 MYSQL 查询与多个 php foreach 循环

    数据库结构 id galleryId type file name description 1 artists 2010 01 15 7c1ec image band602 jpg Red Umbrella Promo 2 artists
  • LAB 色彩空间中的色彩校正矩阵 - OpenCV

    假设我们有图像内 5 个圆圈的 l a b 值 这些值是使用 OpenCV 计算的 imlab cv2 cvtColor circle img only cv2 COLOR BGR2LAB astype float32 实际上 我们从每个圆
  • cuda中的矩阵乘法

    假设我想将两个矩阵相乘 50 x 50 我有两种方法来排列线程和块 a 一个线程计算结果矩阵的每个元素 所以我在线程中有一个循环乘以一行和一列 b 一个线程执行每个乘法 结果矩阵的每个元素需要 50 个线程 乘法完成后 我可以使用二进制归约
  • 使用 .NET 根据架构验证 XML

    我想测试 正确或错误 任意 XML 文件是否与给定架构匹配 就其价值而言 该架构是 Word 2003 WordML 架构 Microsoft 使用大约 7 个列表来定义该架构 xsd files 这些文件之一还包括 W3Cxml xsd文
  • 使用分隔符将单元格连接成字符串 pandas python

    鉴于以下情况 df pd DataFrame col1 a b col2 ab np nan col3 w e 我希望能够创建一列 将所有三列的内容连接成一个字符串 用字符 分隔 同时忽略NaN 这样我就会得到类似的东西 例如 a ab w
  • Drawable-hdpi、Drawable-mdpi、Drawable-ldpi Android

    我之前使用的是 Android 1 5 但现在已经升级到最新版本 所以在Android 1 5中只有一个 drawable 文件夹 但现在Android项目中有三个不同的文件夹用于存储图像 我找到了一些关于这三个文件夹的文章 上面写着 hd
  • 如何从字符串中删除 php 代码?

    我有一个字符串 其中包含 php 代码 我需要从字符串中删除 php 代码 例如 p Dummy p 应该返回 p Dummy p 例如 没有 php 的字符串 p Dummy p 应该返回相同的字符串 我知道这可以用正则表达式来完成 但
  • IPython 和 Jupyter Notebook 中函数调用前使用分号的奇怪行为

    我在使用 Jupyter Notebook 时偶然发现了一些奇怪的行为 并想知道其目的是什么 如果有的话 如果在函数调用之前输入分号 则会得到将该函数应用于字符串的结果 该字符串反映了函数名称后面的所有代码 例如 如果我这样做 list a
  • 如何删除 Dart 列表中的重复项?列表.distinct()?

    如何从列表中删除重复项而不用浪费时间 有类似 list distinct 的东西吗 或者list unique void main print Hello World List
  • img 标签元素与带有背景图像的 div 之间的性能差异?

    在 img 标签中显示图像与具有图像背景的 div 中显示图像时 性能或加载 缓存行为是否有任何差异 我的例子 我有一个包含许多重叠图像的网站 其中一些图像需要使用 javascript 动态加载 一个问题是我需要将图像锚定到元素的右侧 这
  • 使用鼠标事件在画布上绘制一个圆圈

    我试图使用鼠标事件在画布上使用鼠标绘制一个圆圈 但它没有绘制任何内容 tools circle function var tool this this started false this mousedown function ev too
  • Puppeteer 无法在 Heroku 上运行

    我在 heroku 上部署了一个应用程序 并添加了 Puppeteer Heroku 构建包 重新部署成功后 我尝试运行它 但失败了 使用heroku logs t 我收到此错误消息 2018 09 07T13 16 10 870497 0
  • 未接收 Firebase 云消息/通知。 JS

    我正在尝试使用云功能将 FCM 发送到我的 React 应用程序 云函数正在执行 但客户端未收到通知 这里是云函数代码 exports sendPush functions database ref settings2 onWrite ev
  • 如何使用正确的编码将所有控制台输出重定向到 Swing JTextArea/JTextPane?

    我一直在尝试将 System out PrintStream 重定向到 JTextPane 除了特殊区域设置字符的编码之外 这工作得很好 我找到了很多关于它的文档 参见 ex Mindprod 编码页面 但我仍在与之斗争 StackOver
  • 在 Objective C 中隐藏头文件中的实例变量

    我遇到了一个用 Objective C 编写的库 我只有头文件和 a 二进制文件 在头文件中 是这样的 interface MyClass MySuperClass nothing here property nonatomic retai
  • 关键字“params”到底如何工作?

    以下代码示例打印 T T T 虽然前两行符合预期 但为什么编译器选择 param array 作为常规数组 public class A public void Print
  • Android 上的 Google 语音识别器需要互联网吗?

    我使用以下代码来调用谷歌的语音识别器 This is a demonstration of Android s built in speech recognizer package com example voiceinputbuiltin
  • 删除矩阵中的重复列

    我有一个尺寸为401 5677的数据集 在该矩阵的列中 存在相同但列名不同的列 现在 我想只保留重复多次的列中的一列 并获取已删除列的索引 j 让我们使用以下矩阵作为示例 B matrix c 1 4 0 2 56 7 1 4 0 33 2
  • 允许更多 WebGL 上下文

    我目前正在开发一个包含项目列表的网站 每个项目都有一个缩略图 我使用以下方法为所有项目添加着色器效果PixiJS 问题是列表中的项目超过 16 个 因此我收到以下错误 警告 活动的 WebGL 上下文过多 最旧的上下文将丢失 有没有办法提高