个性化阅读
专注于IT技术分析

如何使用JavaScript从浏览器中检索计算机的视频卡名称/型号

通过WebGL的WEBGL_debug_renderer_info扩展, 可以使用JavaScript在浏览器中检索视频卡描述, 该扩展是WebGL API的一部分, 并公开了两个常量以及有关图形驱动程序的信息以用于调试。根据浏览器的隐私设置, 此扩展名可能仅对特权上下文可用。通常, 仅在极端情况下才应使用图形驱动程序信息来优化WebGL内容或调试GPU问题。

WebGLRenderingContext.getParameter()方法使你能够检测到支持哪些功能, 而failIfMajorPerformanceCaveat上下文属性使你可以控制是否应该完全返回上下文(如果性能会大大降低)。下面的方法遵循上述逻辑, 并返回一个对象(如果可用), 以及在renderer属性上所需的信息:

/**
 * A very simple method to retrieve the name of the default videocard of the system
 * using webgl.
 * 
 * @see https://stackoverflow.com/questions/49267764/how-to-get-the-video-card-driver-name-using-javascript-browser-side
 * @returns {Object}
 */
function getVideoCardInfo() {
    const gl = document.createElement('canvas').getContext('webgl');

    if (!gl) {
        return {
            error: "no webgl", };
    }
    
    const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');

    if(debugInfo){
        return {
            vendor: gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL), renderer:  gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL), };
    }

    return {
        error: "no WEBGL_debug_renderer_info", };
}

你只需调用该方法, 你将获得可用信息, 你可能还需要检查错误:

let data = getVideoCardInfo();

if(data.hasOwnProperty("error")){
    // Display error in the console
    console.log(data.error);
}else{
    // Display information
    console.log(data);
}

如果一切按预期进行, 你将在控制台中看到一个具有2个属性的简单对象:

{
  "vendor": "Google Inc.", "renderer": "ANGLE (NVIDIA GeForce GTX 1050 Direct3D11 vs_5_0 ps_5_0)"
}

在我们的案例中, 我们有一个NVIDIA GeForce GTX 1050ti, 你可以在上述对象中看到它。 vendor属性通常会输出拥有浏览器的公司名称(用于Firefox和Chrome的Google Inc.或用于Edge的Microsoft)。这个小功能可在所有最新的浏览器中使用。

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何使用JavaScript从浏览器中检索计算机的视频卡名称/型号

评论 抢沙发

评论前必须登录!