警告:“太多活动的 WebGL 上下文。最旧的上下文将丢失”(WebGLRenderer.js)

Posted

技术标签:

【中文标题】警告:“太多活动的 WebGL 上下文。最旧的上下文将丢失”(WebGLRenderer.js)【英文标题】:Warning: "Too many active WebGL contexts. Oldest context will be lost" (WebGLRenderer.js) 【发布时间】:2019-09-26 21:21:22 【问题描述】:

在 Autodesk Forge Viewer 中,我无法在同一页面上实例化超过 6 个查看器 (Autodesk.Viewing.ViewingApplication)。

我尝试过这里提出的解决方案,但它不起作用: There are too many active WebGL contexts on this page, the oldest context will be lost. [dedup.min.js]

我使用的函数:

Autodesk.Viewing.Initializer(options, function onInitialized()
                this.viewerApp = new Autodesk.Viewing.ViewingApplication(this.div_id);
                this.viewerApp.registerViewer(this.viewerApp.k3D, Autodesk.Viewing.Private.GuiViewer3D,  extensions: ['PropertyInspectorExtension']);
                this.viewerApp.loadDocument(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
            .bind(this));

显然,有一种方法*可以使用 Three.js 来实现,但它是否以某种方式在 Autodesk Forge 中实现?不然我自己都不知道怎么弄。

*答案: Display multiple instances of three.js in a single page Is it possible to enable unbounded number of renderers in THREE.js?

*结果示例: https://threejs.org/examples/webgl_multiple_elements.html

【问题讨论】:

Autodesk Forge Viewer 中未实现。也许您可以考虑设计您的页面,以便一次只有一个视图处于活动状态。您也可以尝试使用virtual-webgl。您可能应该像自述文件中提到的那样禁用 webgl2。 【参考方案1】:

我知道这是一种解决方法,但您可以将此命令行开关与 Chrome 一起使用:

--max-active-webgl-contexts=<number>

当然,这只会为您解决问题,而不是其他任何人,但有时这就足够了。

【讨论】:

以上是关于警告:“太多活动的 WebGL 上下文。最旧的上下文将丢失”(WebGLRenderer.js)的主要内容,如果未能解决你的问题,请参考以下文章

警告执行已完成,带有警告存储过程

怎么忽略KEIL的警告

IOS警告消除

Quick.db unwarn 命令取消警告成员中的所有警告

java程序中很多警告,如何修改掉?

将特定级别的所有警告视为错误,而不是下一级的警告