我想得到一个像这样的字符串:英特尔开源技术中心 Mesa DRI 英特尔(R) 高清显卡 520 (Skylake GT2)
仅在浏览器上使用 javascript。我知道有一个图书馆augur.io https://www.augur.io/#deviceFeatures可以找到该值,但我需要一个开源解决方案或知道可以使用什么js方法。
您可以使用 WebGLWEBGL_debug_renderer_info
扩大。尽管 (a) 用户可能没有 WebGL,并且 (b) 扩展程序可能不可用,具体取决于浏览器。
function getVideoCardInfo() {
const gl = document.createElement('canvas').getContext('webgl');
if (!gl) {
return {
error: "no webgl",
};
}
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
return debugInfo ? {
vendor: gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL),
renderer: gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL),
} : {
error: "no WEBGL_debug_renderer_info",
};
}
console.log(getVideoCardInfo());
根据@jaromanda X 的评论,这个扩展是有争议的。有些人认为了解 GPU 是一个隐私问题。例如,MacPro 拥有(或曾经拥有)MacPro 专用 GPU。 MacPro 就像一台价值 6000 美元的机器,因此通过了解这个人的 GPU,您就可以知道他们拥有 $$$$。正如“如果 GPU = MacPro 的 GPU,则显示昂贵产品的广告”。同样,它是识别您的特定机器的另一条信息。
反对的论点有很多
通过检查 webgl 参数(例如最大纹理大小、支持的制服数量等),您可以在某种程度上确定用户拥有高端 GPU。让 WebGL 有用所需的一些东西。
关于使用信息来识别机器,您已经可以通过对 WebGL 参数和渲染工件进行指纹识别来获取大部分信息。
对于技术支持来说,了解用户的 GPU 通常很重要,而要求非技术用户深入研究他们的系统来找出答案并不是很有帮助。
有些驱动程序存在错误,虽然解决这些错误是浏览器的工作,但通常需要 3 到 6 个月的时间才能修复错误并将该修复渗透到浏览器的发布版本。与此同时,公司需要一种解决错误的方法,这种方法通常采用“如果 GPU = X 做 Y”的形式,其中 Y 可以是从“使用不同的技术”到“不要为该用户使用 WebGL”的任何内容。 。这就是谷歌地图所做的。如果已知特定的 GPU/驱动程序不稳定,那么 Google 地图将回退到功能少得多的 canvas2d 版本。
关于最后两点,许多网站会尽最大努力跟踪错误和/或崩溃。通过跟踪 GPU,他们可以了解崩溃是否与特定 GPU/驱动程序相关并实施解决方法。
注:S.O.确实不是争论这个扩展是好是坏的地方。上面的信息大部分仅供参考。双方各有各的优点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)