javascript - 在 WebGL 中使用 texImage2D 加速或多线程纹理上传
问题描述
我正在构建一个遭受严重性能瓶颈的 WebGL 应用程序。应用程序通常需要将一组大型纹理(例如 2000 x 2000)突发上传到 GPU。现在它正在texImage2D
通话中窒息。每次我打电话texImage2D
都会出现明显的卡顿。当它们爆发时,它会完全扼杀 UI 体验。
这实际上是 OpenGL 应用程序的一个端口。在 OpenGL 中,这个问题是通过在单独的线程中上传纹理来解决的,并且效果很好。据我所知,在 WebGL 中没有直接的方法可以做任何类似的事情。我最初尝试OffScreenCanvas
与工人一起使用。计划是将一个转移OffScreenCanvas
到一个Worker
将上传纹理的,但我发现我只能访问WebGLRenderingContext
一个OffScreenCanvas
中的一个Worker
。这违背了我的目的。
有没有其他方法可以加快texImage2D
呼叫速度,或者以某种方式让 CPU->GPU 传输发生在单独的Worker
?
我可以将许多不同的来源传递给texImage2D
调用,我可以期望它们中的一些比其他的性能更好吗?ImageBitmap
看起来很有希望(我将对此进行测试),但我无法确定 an 的数据ImageBitmap
是否保存在 GPU 中。
解决方案
推荐阅读
- php - 如何使用多个产品标题(Shopify)REST API 进行搜索?
- jenkins - Jenkins Pipeline groovy compareTo 运算符不起作用
- c++ - C ++我不知道此代码中的输出过程(父类子)
- python - 如何循环子图中的轴
- mysql - 将数据存储在 MySQL 块中
- python - 无法在 jupyter notebook 中为 keras kfold 验证代码创建会话
- javascript - 异步请求函数永远不会完成执行
- javascript - 无法使用 pa11y 操作登录网站
- python - Kivy:更改屏幕上的图像源
- python - 在 Python 中绘制 2D 面板以形成 3D 框