Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 与iframe和/或窗口弹出窗口共享WebGL上下文_Javascript_Iframe_Electron_Webgl - Fatal编程技术网

Javascript 与iframe和/或窗口弹出窗口共享WebGL上下文

Javascript 与iframe和/或窗口弹出窗口共享WebGL上下文,javascript,iframe,electron,webgl,Javascript,Iframe,Electron,Webgl,我们正在尝试构建一个允许嵌入内容(DOM或iFrame)被“浮动”的应用程序,即通过window.open()移动到一个单独的窗口 两个窗口之间是否可以共享WebGL渲染上下文?这将防止新窗口必须重建GPU上下文:纹理上载、着色器编译等 附加问题:iFrame之间可以共享上下文吗 双重好处:对于电子场景,上下文可以在渲染进程之间共享吗 两个窗口之间是否可以共享WebGL渲染上下文?这将防止新窗口必须重建GPU上下文:纹理上载、着色器编译等 WebGL上下文只能与单个画布一起使用,因此当您可以在另

我们正在尝试构建一个允许嵌入内容(DOM或iFrame)被“浮动”的应用程序,即通过
window.open()
移动到一个单独的窗口

  • 两个窗口之间是否可以共享WebGL渲染上下文?这将防止新窗口必须重建GPU上下文:纹理上载、着色器编译等

  • 附加问题:iFrame之间可以共享上下文吗

  • 双重好处:对于电子场景,上下文可以在渲染进程之间共享吗

  • 两个窗口之间是否可以共享WebGL渲染上下文?这将防止新窗口必须重建GPU上下文:纹理上载、着色器编译等

    WebGL上下文只能与单个画布一起使用,因此当您可以在另一个窗口中使用该上下文时(假设它是由同一页面打开的窗口),它只能呈现到最初与之关联的画布

    附加问题:iFrame之间可以共享上下文吗

    同上

    双重好处:对于电子场景,上下文可以在渲染进程之间共享吗

    不,您可以在同一进程中跨窗口共享。您不能跨进程共享

    可以使用canvas 2d将WebGL画布绘制到2d画布中,这样就可以使用一个画布,在该画布中渲染,然后将其复制到iframes

    有关示例,请参见 在左上角单击创建新窗口。每个新窗口都是同一场景中的另一个视图。窗口(包括主窗口)都是通过使用2D画布和drawImage进行渲染的


    您可能可以使用
    OffscreenCanvas
    并通过渲染到iFrame中的多个画布。

    对于1和2,您确定这些断言吗?为什么一个窗口无法从另一个窗口访问上下文?WebGLRenderingContext接口是否有一个特殊的“同源但我们仍然不允许访问该对象”的特殊规则?似乎没有:你甚至可以将渲染器从一个窗口移到另一个窗口:也许我误解了问题。您不能在画布上共享上下文,因此,您可以跨窗口或iFrame使用上下文这一事实基本上是不相关的。你最终还是会使用我建议的解决方案,渲染到一个画布,绘制图像到其他画布。他们没有谈论另一块画布。不,我的小提琴使用了一个HTMLCanvasElement和一个webgl context.Ok。更新了答案。