检测浏览器是否开启硬件加速

检测浏览器是否开启硬件加速

目录

原理

使用浏览器支持的WEBGL API返回相关信息,具体可以查看 MDN文档

一般我们用到下面两个参数:

  1. ext.UNMASKED_VENDOR_WEBGL:图形驱动程序的供应商字符串。
  2. ext.UNMASKED_RENDERER_WEBGL:图形驱动程序的渲染器字符串。Safari默认开启GPU加速且无法关闭,可以跳过检测;谷歌浏览器在关闭硬件加速的情况下,渲染器名称会返回类似 SwiftShader driver,开启则返回当前使用的GPU相关信息。

代码

function isGPUAcceleratorEnabled() {
  const canvas = document.createElement('canvas');
  const gl = canvas.getContext('webgl');
  if (gl) {
    const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
    if (debugInfo) {
      // const vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
      const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
      return !/SwiftShader/gi.test(renderer);
    }
  }
  return false;
}