ThreeJS:WebGLRenderer表现得非常奇怪

时间:2017-03-03 15:37:37

标签: three.js

我面临着非常奇怪的问题。我在三星note3中运行两个threejs应用程序(相同的代码库仅在ui中更改)。一个应用程序运行正常,但在另一个应用程序中,webgl无法运行,Detector.webgl返回false。

ThreeJS版本:r79

this.renderer = new THREE.WebGLRenderer({
            antialias: true
        });

上面的代码给出了这个错误:

TypeError: Cannot call method 'getExtension' of null
at get (file:///android_asset/www/grid-assets/js/three.js:28022:20) 
at new THREE.WebGLRenderer (file:///android_asset/www/grid-assets/js/three.js:25056:13)

任何帮助都将受到高度赞赏。

由于

1 个答案:

答案 0 :(得分:0)

当实例化WebGLRenderer时,调用WebGLExtensions以获得各种纹理过滤支持。创建画布对象时,任何支持webGL的浏览器中存在的gl对象。 Three.js称之为:

gl = canvas.getContext('webgl');

在你的情况下,gl正在返回Null。由于您的错误不是:“getContext未定义”,我们知道您有一个很好的画布。问题是,当调用THREE.WebGLExtensions时,它没有将webGL上下文返回到gl属性。因此,由于某种原因,浏览器不提供具有webGL访问权限的Three.js。

这可能是一些事情。可能是对象加载到页面上的时间,或者是在浏览器中暂停webGL访问的某些内容,例如挂起进程。很难说。我会检查你是否有最新的Android和Android浏览器。我会将您的工作应用与失败的应用进行比较,以尝试确定失败点。同时重启设备并让您失败的应用程序成为您打开的第一件事,以帮助排除导致webGL失败的外部进程。