javascript - 在 webgl 中切换 Canvas 是否会像桌面 opengl 一样强加 'context switch overhead' ?

标签 javascript canvas webgl

在桌面 OpenGL 中,众所周知,切换上下文会导致一些开销损失,特别是您必须重新加载/重新绑定(bind)内存中的某些对象(纹理等)。

当您在 WebGL 中的不同 Canvas 元素之间切换时,是否会发生相同的上下文切换惩罚?是否有任何 webgl 对象可以在一个页面上的 canvas 元素之间共享?

最佳答案

没有可以跨 Canvas 共享的 WebGL 对象。有一些解决方案可以通过使用一个大 Canvas 来使其看起来有多个 Canvas ,如果 Canvas 需要共享 WebGL 对象,这是一种解决方案。 WebGL example , three.js example .

至少在 Chrome 中,我不希望在 Canvas 之间切换绘图时产生任何开销。首先,每帧每个 Canvas 在 Canvas 之间切换的次数不可能超过一次。如果您的 Canvas 全部在屏幕上,则上述解决方案将覆盖它们。如果它们更加分开(例如您必须滚动才能看到更多 Canvas ),则 a solution like this会减少开关的数量。但在大多数驱动程序上,开销很小。

关于javascript - 在 webgl 中切换 Canvas 是否会像桌面 opengl 一样强加 'context switch overhead' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47394720/

相关文章:

javascript - ThreeJS 中相机有奇怪的行为

javascript - 带有 WebGL 的服务器端 javascript?

glsl - GPGPU - 有效的乒乓球技术?

javascript - 如何在 reactjs 中使用高阶组件添加按钮

javascript - canvas.getContext ('2D' ) 返回空值

javascript - Bootstrap 4 $(...).load 不是一个函数

javascript - 在 HTML Canvas 上加载图像时出现问题

javascript - HTML5 和 Javascript Canvas 游戏 - 如何让玩家能够保存游戏

javascript - Algolia 按嵌套属性 JavaScript 过滤

javascript - Bootstrap 多级下拉菜单不会自动关闭