【问题标题】:Do we need to implement double buffering ourselves with <canvas>?我们是否需要用 <canvas> 自己实现双缓冲?
【发布时间】:2012-07-31 10:12:51
【问题描述】:

我开始使用 Canvas(带有 GWT),我们需要自己实现双缓冲吗?想知道浏览器是否已经以某种方式为我们实现了这一点。

谢谢

【问题讨论】:

    标签: html gwt canvas


    【解决方案1】:

    您绝对不需要自己实现双缓冲,这样做会浪费时间和性能。

    幸运的是,每个画布实现都会在幕后为您实现。

    这是一个简单的例子:http://jsfiddle.net/HYVLj/

    【讨论】:

    • 是的,当我也发现时,我真的松了一口气。感谢您提出这个问题,以便将来想知道的人也能发现!
    • 错了。考虑观看youtube.com/watch?v=Prkyd5n0P7k,实施它,进行自己的计时测试,并自行决定它是否提供额外的性能。
    • @sws 还是这样吗?
    • @sws 你能链接到一个比 50 分钟视频更简洁的例子吗?判断您的声明是否属实(或者视频是否完全支持您的声明)太耗时了。我还没有看到任何现场测试表明手动双缓冲画布可以以任何方式提高性能。
    • @Simon Sarris 您能否提供一个在线测试的链接列表,以反驳双缓冲可以提高性能?该视频提供了时间、数字和有关其工作原理的讨论。除了我重新观看视频并为您编写脚本之外,这来自一个可靠的来源(谷歌开发人员),他正在讨论通过遵循自模式 21h 以来存在的特定编程范式获得的性能提升。自己做研究,你不会对结果不满意。
    【解决方案2】:

    我知道这是一个相当古老的线程,但我想指出 Simon Sarris 中的 Fiddle 答案似乎是错误的。当我在谷歌浏览器上尝试它时,我在第 10 行和第 11 行之间(就在循环之前)插入了一条警告语句,方块消失了,只是在我关闭警告窗口后重新出现。似乎循环没有正确执行。也许javascript对其进行了优化。无论如何,在我看来,没有完成双缓冲。如果我错了,请纠正我。

    【讨论】:

    • 通过添加警报,您难道不能让浏览器选择在画布上绘制吗?因为就它而言,脚本已经停止执行?我不确切知道警报是如何将控制权交还给浏览器渲染序列的其他部分的。
    猜你喜欢
    • 1970-01-01
    • 2016-06-25
    • 2011-02-17
    • 2010-12-22
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多