次のような文字列を取得したい:Intel Open Source Technology Center Mesa DRI Intel(R)HD Graphics 520(Skylake GT2)
ブラウザでJavaScriptのみを使用します。augur.ioのライブラリがその値を見つけることができることは知っていますが、オープンソースソリューションが必要であるか、どのjsメソッドを使用できるかを知る必要があります。
WebGLのWEBGL_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の場合、高価なものの広告を表示する」のように。同様に、特定のマシンを識別するためのもう1つの情報です。
反論は多い
webglパラメータ、最大テクスチャサイズ、サポートされているユニフォームの数などを確認することで、ユーザーがハイエンドGPUを使用していることをある程度理解できます。WebGLを便利にするために必要なもの。
情報を使用してマシンを識別することに関しては、WebGLパラメーターをフィンガープリントしてアーティファクトをレンダリングすることにより、その情報のほとんどをすでに取得できます。
テクニカルサポートでは、ユーザーのGPUを知ることが重要であることが多く、技術者以外のユーザーにシステムを調べて理解するように依頼することはあまり役に立ちません。
一部のドライバーにはバグがあり、それらのバグを回避するのはブラウザーの仕事ですが、バグが修正され、その修正がブラウザーのリリースバージョンに浸透するまでに3〜6か月かかることがよくあります。それまでの間、企業はバグを回避する方法を必要としています。これは、「GPU = XがYを実行する場合」の形式であることが多く、Yは「別の手法を使用する」から「このユーザーにWebGLを使用しない」までのいずれかになります。 。これはGoogleマップが行うことです。特定のGPU /ドライバーが不安定であることがわかっている場合、Googleマップは機能がはるかに少ないcanvas2dバージョンにフォールバックします。
最後の2つのポイントに関連して、多くのWebサイトはエラーやクラッシュを可能な限り追跡します。GPUを追跡することで、クラッシュが特定のGPU /ドライバーに関連しているかどうかを確認し、回避策を実装できます。
注:SOは、この拡張機能が良いか悪いかを議論する場所ではありません。上記の情報はほとんどFYIです。どちらにもメリットがあります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加