我使用Three.js构建了一个非常简单的Web GL网站,它显示了一个旋转的多维数据集。当我通过默认的Android浏览器在我的Android手机上运行该网站时,该网站工作正常。但是,当我使用Chrome时,我会看到错误:
Error creating WebGL context
THREE.WebGLRenderer
Uncaught TypeError: Cannot read property 'getShaderPrecisionFormat' of null
我正在使用Chrome v40.0.2214.109和Android 4.1.2。我也试过Chrome Beta并看到同样的错误。我需要该网站在Android上的Chrome上工作,以便能够在桌面上使用Chrome开发者工具。有什么想法吗?
更新
当我在Chrome for Android中转到http://get.webgl.org/时,我会收到消息:
Hmm. While your browser seems to support WebGL, it is disabled or unavailable.
然后我转到了关于Android的Chrome标志:默认情况下看到WebGL被禁用了。我启用并重新启动但仍然看到"嗯。虽然您的浏览器似乎支持WebGL ..."。我尝试启用其他标志但无济于事。最后,我在Chrome for Android中启用了每个标记,但我仍然看到上面的消息。上面的链接在Android浏览器和Android版Firefox中完美运行。任何人都可以解释为什么WebGL不适用于Android v4.1.2上的Chrome for Android?
答案 0 :(得分:1)
Chrome为某些设备设置了黑名单,并且不允许渲染在此类芯片组上正常运行。 https://www.khronos.org/webgl/wiki/BlacklistsAndWhitelists#Chrome_on_Android 您应该在问题中添加了您正在使用的gpu。 顺便说一句,我有一个Android设备与浏览器版本4.1.2,它完美无缺。 忘了chrome,我对webgl的体验非常消极。 我不会在手机和台式机上推荐它。 此外,如果你的演示正在使用股票浏览器,它们将在其他地方工作,因此我认为用它开发它会更好。 截至今天(2015年7月14日),情况并未改变,甚至Firefox也更好。
编辑:你可以尝试激活Chrome Dev中的一些标志,以便Android强制使用WebGL,但如果您碰巧使用的是Mali400或PowerVR SGX 540,即使激活了标记也不会有任何运气。答案 1 :(得分:1)
以下是您无法呈现webgl上下文的回调:
var supportsWebGL = ( function () {
try {
return !! window.WebGLRenderingContext && !! document.createElement( 'canvas' ).getContext( 'experimental-webgl' );
} catch( e ) {
return false;
}
} )();
if(supportsWebGL){
console.log("support");
}else{
console.log("no support");
}