在运行WebGL程序时,我们可以拿到用户机器的一些硬件信息,尤其是显卡的信息。再结合程序的性能统计就能够分析出不同显卡对WebGL程序运行速度的影响,以便后续做进一步的优化。
那么怎么获取呢?代码如下:
function getHardwareInfo(gl) { var debugInfo = gl.getExtension('WEBGL_debug_renderer_info'); if (!debugInfo) { return null; } var vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL); var renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL); return { vendor: vendor, renderer: renderer }; }
首先通过gl的getExtension方法获取一个扩展,前提是用户浏览器支持这个webgl扩展,如果扩展不存在则debugInfo为null,如果获取成功,进而通过属性UNMASKED_VENDOR_WEBGL和UNMASKED_RENDERER_WEBGL可获得vendor和renderer的信息,实际上就是显卡厂商和具体显卡的信息。如果你直接打印这两个属性会发现它们只是数字,通过调用gl.getParameter方法可以获得详细的描述信息。
规范上对vendor的的解释是:
Returns the company responsible for this WebGL implementation. This name does not change from release to release.
renderer的解释是:
Returns the name of the renderer. This name is typically specific to a particular configuration of a hardware platform. It does not change from release to release.
在我的电脑上,vendor和renderer分别是:
- vendor:ATI Technologies Inc.
- renderer:ATI Radeon HD 6490M OpenGL Engine
这个好用!