首页 > 解决方案 > 使用在浏览器中运行的 webgl 创建 GPU 密集型 Web 应用程序是否现实?

问题描述

我一直在考虑使用在浏览器中运行的 webgl 创建一个时髦的游戏,但我注意到尽管拥有 3gb 的 vram 的 NVIDIA GeForce GTX 1060,但我一次最多只能使用 512mb 的 vram . 我相信这是因为浏览器使用的是我的集成 gpu 而不是我的专用 gpu。我读过几个人有同样的问题并通过重新配置来纠正它,但我不希望我的 web 应用程序的用户也有类似的问题并且需要更多的 vram 来担心这个问题运行应用程序。

是否有一个简单的“修复”允许浏览器使用专用 GPU 而无需进行任何技术重新配置?这只是在浏览器中使用 gpu 的不幸问题吗?还是我不了解有关使用 gpu 的基本知识?

标签: browsergpuwebgl

解决方案


在 WebGL 中,您可以要求浏览器使用离散 gpu,方法powerPreference: 'high-performance'getContext传入

const gl = someCanvas.getContext('webgl', {powerPreference: 'high-performance'});

如果存在,您可以使用WEBGL_debug_renderer_info扩展程序检查它是否有效

const canvas = document.createElement('canvas');
const gl = canvas.getContext('webgl', {powerPreference: 'high-performance'});
const ext = gl.getExtension('WEBGL_debug_renderer_info');
if (ext) {
  console.log(gl.getParameter(ext.UNMASKED_VENDOR_WEBGL));
  console.log(gl.getParameter(ext.UNMASKED_RENDERER_WEBGL));
} else {
  console.log('this browser does not support WEBGL_debug_renderer_info');
}

如果您不传入powerPerformance设置,则默认为浏览器选择的任何设置。大多数浏览器默认选择集成 GPU 以节省电量。

至于 GPU 密集型,我会说Google 地球相当密集?


更新

因此,从 2020-07 年起,该powerPreference选项实际上仅适用于双 GPU Mac。好消息是微软显然正在为双 GPU Windows 添加对 Chromium 的支持


推荐阅读