Webgl和three.js在Chrome上运行得很好但在Firefox上却是可怕的

时间:2013-09-10 19:35:07

标签: performance firefox three.js webgl motion

基本上我正在下载一个zip文件并提取一个collada文件以在浏览器中加载。这在Chrome中非常棒,但在Firefox中使用鼠标模型移动真的很慢。我似乎无法弄清楚这一点,或者是否有一个设置我缺少加速Firefox或什么。该文件已在此处加载

http://moneybagsnetwork.com/3d/test.htm

使用jsunzip和three.js加载所有内容。我绕过了jsunzip,这不是问题。我也愚蠢的模型不使用任何事件监听器和没有灯,这没有帮助一点。完全难倒在这里,模型真的不是那么大:/

这是我正在使用的文件的拉链链接

http://moneybagsnetwork.com/3d/good.zip

对多条注释行感到抱歉。如果这个问题得到解决,我可能会重新开始。

2 个答案:

答案 0 :(得分:3)

我注意到Chrome通常比使用Three.js应用程序更快,响应更快。不同之处在于WebGL方面,而是普通的Javascript支持代码。

查看你的代码,看来你在onmousemove函数上做了一些非常繁重的javascript东西。这很可能导致浏览器之间的性能差距很大。 Mousemove在每次鼠标移动期间执行多次,因此很快就会导致性能降低。也可能是Firefox实际上为similat光标移动创建了更多的mousemove事件(不确定)。

您可以将大部分光线投射和其他内容从mousemove移动到鼠标点击。或者,您可以实现延迟鼠标移动,以便最多每秒调用该函数X次,或仅在鼠标停止时调用。这样的事情(未经测试但应该有效):

var mousemovetimer = null; 

function onmousemove(event){     
  if (mousemovetimer) {
    window.clearTimeout(mousemovetimer);
  }
  mousemovetimer = window.setTimeout(delayedmousemove, 100);
}
function delayedmousemove(event) {
  // your original mousemove code here
}

答案 1 :(得分:0)

也许你的显卡在我们的黑名单中。通常会有一个关于这个问题的说明:支持。

卡片因各种原因而被列入黑名单,缺少驱动程序/功能,偶尔崩溃......请参阅: http://www.sitepoint.com/firefox-enable-webgl-blacklisted-graphics-card/

  • 要启用WebGL,请将webgl.force-enabled设置为true。
  • 要启用“图层加速”,请将layers.acceleration.force-enabled设置为true
  • 要在Windows Vista / 7中启用Direct2D,请将gfx.direct2d.force-enabled设置为true