在桌面OpenGL中,众所周知,切换上下文会导致一些开销损失,特别是您必须重新加载/重新绑定内存中的某些对象(纹理等)。
当您在WebGL中的不同画布元素之间进行时,是否会发生相同的上下文切换惩罚?是否有任何webgl对象可以在一个页面上的canvas元素之间共享?
答案 0 :(得分:1)
没有可以在画布之间共享的WebGL对象。如果画布需要共享WebGL对象,可以通过使用一个大画布使其看起来有多个画布的解决方案。 WebGL example,three.js example。
至少在Chrome中,我不希望切换到画布之间的任何开销。首先,你不太可能在每个画布每帧不止一次切换画布。如果您的画布都在屏幕上,那么上面的解决方案将涵盖它们。如果它们更加分离(就像你必须滚动查看更多画布那样),那么a solution like this会降低开关的数量。在大多数司机上虽然开销很小。