从JavaScript中检测ANGLE

时间:2012-11-13 11:30:08

标签: javascript firefox google-chrome webgl three.js

我有一个WebGL / Three.js游戏,当ANGLE用于提供WebGL时,它有一个无用的着色器程序链接错误。我想在主页上向ANGLE用户显示一个醒目的警告(但不是错误的其他用户)以及显示切换到本机OpenGL渲染器的说明。如果用户没有切换到原生GL,我还想自动禁用有问题的功能(阴影)。

Three.js没有提供检测着色器失败的好方法,我不知道如何检测ANGLE,所以我现在正在考虑使用这种近似:

IF Windows AND ( Chrome OR Firefox ) THEN displayWarning()

有更好的想法吗?

2 个答案:

答案 0 :(得分:2)

试试这个,它对我有用。

var _IS_ANGLE_ACTIVE = false;
...
...
var renderer = new THREE.WebGLRenderer( {  antialias: true  });
...
...
var ctx = renderer.domElement.getContext("webgl");
if (ctx==null)
    ctx = renderer.domElement.getContext("experimental-webgl");
if (ctx) {
    var h = ctx.getParameter(ctx.ALIASED_LINE_WIDTH_RANGE);
    _IS_ANGLE_ACTIVE = (h && h.length==2 && h[0]==1 && h[1]==1);
}

如果ANGLE处于活动状态,或者[1,10]具有原生GL,变量h返回[1,1]。

答案 1 :(得分:0)

我会说不,因为webgl规范试图删除有关GPU等的任何特定信息。

您可以尝试制作一个小型测试用例,用于检测readpixels的特定问题并将其用作警告显示器