canvas - 需要加速我的 SVG。我可以转换为 WebGL 或 Canvas 吗?

标签 canvas svg html5-canvas webgl

我有一个包含 10138 个部分的 SVG 绘图,所以它运行缓慢。
我想让它运行得更像 http://workshop.chromeexperiments.com/globe

这是我正在考虑的解决方案/问题

  • 有没有办法让 SVG 部分以较少处理器密集型的方式呈现?
  • 我可以将 SVG 转换为 WebGL 或 Canvas 吗?
  • 我可以让它作为 SVG 运行但通过 WebGL 或 Canvas 渲染吗?

  • 我只是想让它更快......想法?

    这是一个屏幕截图


    最佳答案

    作为一个简化的经验法则:

  • SVG 与要绘制的对象数量成正比
  • Canvas 与分辨率互为缩放。

  • 所以我用 SVG 将 10138 个对象保存在内存中会减慢速度(尽管我不能说硬限制是什么)。如果你进入这个范围的对象,我相信 Canvas 和 WebGL 可能会提供更好的性能。大多数现代浏览器已经支持硬件加速 Canvas 渲染。
    然而,与 SVG 相比,Canvas 涉及更多的用户交互。

    你也可以尝试混合它们(更多细节见 here)。
    以下是一些有用的资源:
  • SVG swarm对比 Canvas swarm (使用 D3.js)
  • Stackoverflow有用信息的线程
  • 关于canvas - 需要加速我的 SVG。我可以转换为 WebGL 或 Canvas 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639211/

    相关文章:

    javascript - mousedown 上的动画环形图

    javascript - JS中如何将矩形移动到x,y坐标

    javascript - addEventListener ('keydown' ) JavaScript 错误?

    html - 将 SVG 缩放到没有蒙版/裁剪的容器

    html - 如何驯服 SVG 作为背景图像

    javascript - 究竟如何进行这个循环的进步呢? (兼容Internet Explorer 9,时间准确)

    javascript - 为什么 Phaser 游戏在移动设备上滞后

    javascript - Canvas 宽度在缩放时延伸到页面之外

    javascript - splice 不适用于 DOM 元素数组

    javascript - 我如何在 Canvas 动画上写文字