【问题标题】:How much WebGL memory is available? What happens when I run out?有多少 WebGL 内存可用?当我用完时会发生什么?
【发布时间】:2017-09-11 16:31:57
【问题描述】:

GPU 内存是有限的——通常比 JS 堆大小等更受限制。诸如大量高分辨率图像之类的东西会填满内存,而且它是共享资源,因此其他应用程序可能会占用大量内存.

在 OpenGL 中,我可以查询可用内存。

WebGL 中是否有任何方法可以做到这一点?我怎么知道我是否用完了?如果我这样做会怎样?

我不确定如何管理 WebGL 体验。如有必要,我可以回退到 SVG 或 Canvas,但我不知道什么时候需要。

【问题讨论】:

标签: memory webgl


【解决方案1】:

实际上,在没有供应商扩展的情况下,您无法在 OpenGL 中查询 VRAM 总数和可用大小。 OpenGL 和 WebGL 将其隐藏在您的应用程序中。此外,WebGL 会为您管理资源,在需要时将它们上传到 VRAM。

如果您尝试创建过多资源,您的应用程序的性能将显着下降,并且有可能生成webglcontextlost 事件。此外,Mozilla 的 WebGL 实现可能会在调用 texImage2D 时生成 OUT_OF_MEMORY 错误(在“WebGL Insights”一书中提到),这在某种程度上可以用作耗尽系统资源的标志。

【讨论】:

  • 正确 :( 连浏览器都不知道。它只是调用系统并期望 GL_OUT_OF_MEMORY。
【解决方案2】:

Chrome 现在在开发工具中内置了 FPS-Meter。 此外,您还可以看到“已使用”和“最大”GPU 内存。 https://developer.chrome.com/devtools/docs/rendering-settings

在我的系统上,它限制为 512 MB - 我有一个 4GB 的显卡。 所以我认为这是您在桌面系统每个标签上可以使用的最大 VRAM。

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2014-04-29
    相关资源
    最近更新 更多