检测浏览器是否开启硬件加速
原理
使用浏览器支持的WEBGL API返回相关信息,具体可以查看 MDN文档。
一般我们用到下面两个参数:
- ext.UNMASKED_VENDOR_WEBGL:图形驱动程序的供应商字符串。
- 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;
}