2

据我所知,这条消息是在驱动程序遇到错误时出现的。这似乎意味着 JavaScript 代码即使存在某种错误也无法触发此警告,因为更高级别的错误检查。

但是我的代码最近触发了它,只有一次,我无法重现它(并且代码 - 至少在理论上 - 每次都向 WebGL 发送完全相同的命令)。所以我只想知道我是否应该调试我的代码(我看不到任何明显的错误),或者我是否应该将其归结为硬件随机/浏览器错误。

我可以根据要求发布半精简代码,但它仍然大约有半千行,我当然不希望人们为我调试它,因此更普遍的问题是可能的问题。

4

1 回答 1

1

我对您的问题“触发器”的含义有些挣扎。当这个错误发生时,javascript总是在因果链中,因为没有javascript执行WebGL就不会运行,对吧?所以当然有可能意外触发错误(除非你总是故意触发它,我敢肯定不是这种情况)。

然而,图形驱动程序因受许多不受程序员控制或程序员必须检测到的因素的影响而臭名昭著,因此看起来是不确定的。这就是为什么 Google 建议您在出现错误时尝试重新加载页面。(这里有指向他们指导的链接,但他们移动或删除了该页面。)我经常让 Chrome 在重新加载页面后成功显示一些 WebGL,而之前的尝试以“snag”错误结束。(我知道你知道这一点。)

有时 WebGL 代码(如http://shadertoy.com/上的各种着色器)在某些机器上运行良好,而在其他机器上运行良好,并且在同一台机器上运行良好,一分钟而不是下一分钟。因此,这表明“障碍”错误并不一定意味着您的代码有问题。

但是,诸如如何编写可移植 WebGL之类的文章可以帮助您最大限度地减少代码中的风险实践,并降低这些错误的频率。

于 2013-05-24T20:07:01.737 回答