3

WebGL を提供するために ANGLE を使用すると、役に立たないシェーダー プログラム リンク エラーが発生する WebGL / Three.js ゲームがあります。既にホームページにある 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);
}

変数 h は、ANGLE がアクティブな場合は [1,1] を返し、ネイティブ GL では [1,10] のようなものを返します。

于 2013-11-22T15:55:22.330 に答える
0

webgl の仕様では、GPU などに関する特定の情報を削除しようとしているため、ノーと言います。

readpixels の特定の問題を検出する小さなテストケースを作成して、それを警告表示器として使用することができます。

于 2012-11-13T13:02:17.807 に答える