Previamente, pude detectar si el navegador tiene habilitada la Aceleración de hardware o no, usando el indicador failIfMajorPerformanceCaveat.
const canvas = document.createElement("canvas"); canvas.setAttribute("width", "1"); canvas.setAttribute("height", "1"); const body = document.getElementsByTagName("body")[0]; body.appendChild(canvas); const gl = canvas.getContext("webgl", { failIfMajorPerformanceCaveat: true }); body.removeChild(canvas); return !gl;
Sin embargo, esta bandera ya no parece fallar y el contexto del lienzo aún se crea. Tengo la última versión de Chrome (101.0.4951.67) y uso Windows. ¿Alguien puede ayudarme?
Me encontré con esto recientemente también. Tengo una solución alternativa que estoy usando, pero no una solución real:
function isSwiftShaderRenderer() { const canvas = document.createElement('canvas'); const gl = canvas.getContext('webgl'); const debug_ext = gl.getExtension('WEBGL_debug_renderer_info'); if (debug_ext) { const renderer = gl.getParameter(debug_ext.UNMASKED_RENDERER_WEBGL); if (renderer.indexOf('SwiftShader') >= 0) { return true; } } return false; } console.log(isSwiftShaderRenderer());
Nota: esto no funciona en Firefox y failIfMajorPerformanceCaveat
no funciona en Firefox debido a que webgl.disable-fail-if-major-performance-caveat
predeterminado true