我面临着非常奇怪的问题。我在三星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)
任何帮助都将受到高度赞赏。
由于
答案 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失败的外部进程。