代码位置:engine/cocos2d/core/platform/CCSys.js#L902行
我们可以看到CCSys.js的902行,是这样判断是否支持webgl的
if (win.WebGLRenderingContext) {
考虑到不是所有的浏览器都会将WebGLRenderingContext挂载到window全局对象里面,可能有些浏览器的实现会顺便挂载进去,但这并不是约定俗成的一件事,实际上从MDN上推荐用这种方式来判断是否支持webgl:
function detectWebGLContext () {
// Create canvas element. The canvas is not added to the
// document itself, so it is never displayed in the
// browser window.
var canvas = document.createElement(“canvas”);
// Get WebGLRenderingContext from canvas element.
var gl = canvas.getContext(“webgl”)
|| canvas.getContext(“experimental-webgl”);
// Report the result.
if (gl && gl instanceof WebGLRenderingContext) {
return true;
} else {
return false;
}
}
另外再看一下为什么不支持UC浏览器使用webgl
位置:engine/cocos2d/core/platform/CCSys.js#L934行
很忧伤的一件事情,switch case到sys.BROWSER_TYPE_UC:这个路径的时候少了个break,直接最后当作false了
case sys.BROWSER_TYPE_UC:
if (browserVer > 11.0) {
_supportWebGL = true;
} else {
_supportWebGL = false;
}
case sys.BROWSER_TYPE_360:
_supportWebGL = false;
}
另外这是我在cocos creator的github上提的issue,希望cocos大神们尽快关注一下,并能在下个cocos creator版本修复