Skip to content

Uncaught Error: This browser does not support webGL. Try using the canvas renderer #200

@terrykingcha

Description

@terrykingcha

现象描述

这个错误出现在线上环境,少量用户会抛出这个未被捕获的错误,提示当前浏览器无法支持WebGL。通过机型和浏览器判断,理论上是应该支持的。

链路跟踪

  1. 在plugin-renderer中,用renderer-adapater的Application创建。代码
  2. renderer-adapter中的Applcation继承自Pixi.js的Application
  3. Pixi.js的Application通过一个autoDetectRenderer方法识别当前系统支持情况,并自动做出选择。代码
  4. 初始化WebGLRenderer构造函数,其中使用pixi-gl-core来创建上下文。代码
  5. 在pixi-gl-core的createContext方法中,判断是否正确创建WebGLContext,如没有则此报错。代码

问题排查

  1. 上述链路中存在一个疑点,即当第3步中使用autoDetectRenderer方法识别时,已经用isWebGLSupported方法判断了是可以支持WebGLContext的,但在第5步中又紧接着创建失败了。
  2. autoDetectRenderer中的判断规则更加严格,只能认为这个报错在非常特殊的情况下发生,也就是前后两次获取WebGLContext上下文环境出现了突然的改变,目前无法得知是什么原因。

解决方案

  1. 在eva.js中,捕获这个错误(上诉链路的第一步),并再次强制使用Canvas再初始化一次。

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions