3

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

Three.js 没有提供检测着色器故障的好方法,而且我不知道如何检测 ANGLE,所以我目前正在考虑使用这个近似值:

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

有更好的想法吗?

4

2 回答 2

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 处于活动状态,则变量 h 返回 [1,1] 或类似于原生 GL 的 [1,10]。

于 2013-11-22T15:55:22.330 回答
0

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

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

于 2012-11-13T13:02:17.807 回答