Как извлечь название / модель видеокарты из браузера с помощью JavaScript

Описание видеокарты можно получить в браузере с помощью JavaScript через WEBGL_debug_renderer_info Расширение WebGL, это расширение является частью API WebGL и предоставляет две константы с информацией о графическом драйвере для целей отладки. В зависимости от настроек конфиденциальности браузера это расширение может быть доступно только для привилегированных контекстов. Как правило, информация о графическом драйвере должна использоваться только в крайних случаях для оптимизации содержимого WebGL или для устранения проблем с графическим процессором.

WebGLRenderingContext.getParameter() Метод позволяет определить, какие функции поддерживаются и failIfMajorPerformanceCaveat Атрибут context позволяет вам контролировать, нужно ли вообще возвращать контекст, если производительность будет резко снижена. Следующий метод следует указанной логике и возвращает объект (если он доступен) с информацией, которая вам нужна 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 обычно выводит название компании, которой принадлежит браузер (Google Inc. для Firefox и Chrome или Microsoft для Edge). Эта маленькая функция работает во всех последних браузерах.

Ссылка на основную публикацию
Adblock
detector