Windows 7中HTML5 Canvas drawImage问题,但仅在Firefox中。

3

我正在开发一个程序(你可以在www.energematrice6.com/gview2上看到它),但遇到了问题。

这个星系查看器将星星绘制在6个不同的图层上。后面的图层使用简单的描边命令工作正常。而前面的3个图层使用drawImage()功能将已保存的图像绘制到画布上(使用starGradDraw和starGradDraw2函数)。

这些图像是由另一个函数在程序第一次执行时创建并保存到对象变量中(基本上只是一个缓冲区)。

在我的家用电脑、笔记本电脑、妻子的电脑以及我测试过或让朋友测试过的几乎所有其他机器上,一切都正常。

但当我在我的工作电脑上尝试在Firefox 10.0.2中打开它时(与我在家使用的版本相同),前三个星星图层是空白的。我能想到的唯一区别是,我的家用电脑没有使用64位操作系统或专门的Windows 7。

程序中的其他功能似乎仍然正常工作,firebug没有弹出任何错误。它只是没有绘制图像(或停止程序)。我真的不知道接下来该尝试什么。

有什么想法吗?

(如果你愿意,我可以粘贴一些代码,但程序超过一千行,我不确定问题可能出现在哪里,也不确定它为什么只在这台机器上出错。)


首先,尝试在工作中更新您的图形驱动程序。这听起来不像是一个编程问题,而是一个运行时环境问题(驱动程序、浏览器等)。 - Blindy
就我个人而言,在我的64位Win7上使用Chrome一切正常。 - Blindy
可能是这样。我并不是一个经验丰富的程序员,所以我非常习惯于一切都是我的错。(是的,我在这台机器上安装了Chrome来检查。在那里工作得很好。)如果有任何Win7 64位的人可以为我在FF中进行测试,我将非常感激。(感谢Blindy) - Brightstar
1
Juan,您能否看一下https://bugzilla.mozilla.org/show_bug.cgi?id=736079#c6? - Brightstar
Firefox 13已经发布,我也遇到了同样的问题。如果我禁用硬件加速,问题就解决了。 - jonathancardoso
显示剩余2条评论
1个回答

5
经过大量的研究和错误排查,我发现这个问题实际上是Firefox本身的一个bug。
显然在当前版本中启用2-D图形硬件加速时,Firefox无法正确保存径向渐变当它们直接绘制到缓冲画布(仅在屏幕外)。
关闭硬件加速可以使浏览器正确处理命令。
已经提交了一个错误报告,希望问题能被解决。

对于那些在Firefox遇到类似问题的人,我发现使用普通的Image进行drawImage调用时,无法启用硬件加速进行渲染。每帧中,它要被渲染的坐标会相对于经过的时间而改变,这可能与此有关。 关闭硬件加速并重新启动Firefox即可解决该问题。 - Grimeh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接