代码之家  ›  专栏  ›  技术社区  ›  Ali Ok

使用EaselJS StageGL高效绘制网格

  •  1
  • Ali Ok  · 技术社区  · 8 年前

    我想用EaselJS在画布上绘制一个网格。我正在使用新的WebGL阶段,StageGL。

    我看到了多种选择:

    1. 绘制N+M条线作为所有不同的形状(我说的是EaselJS“形状”实例),缓存它们(因为WebGL需要光栅),并将它们添加到舞台上。
    2. 绘制一个由N+M路径组成的形状,缓存它并将其添加到阶段。

    选项#1对我来说似乎很天真。它们都是相同的图像,为什么要将它们绘制到缓存N+M次?

    选项2可以解决选项1中的问题,但我不知道如何解决。

    哪种方法最好?

    还有其他方法吗?我不认为我是第一个画网格的人:)

    1 回复  |  直到 8 年前
        1
  •  1
  •   Lanny    8 年前

    var shape = new createjs.Shape();
    shape.graphics.drawStuff();
    
    // Since shapes have no bounds, you will have to know the bounds based on what you draw:
    shape.cache(x, y, w, h);
    
    var bmp = new createjs.Bitmap(shape.cacheCanvas);
    

    您可以绘制尽可能多的位图,而无需任何额外成本,因为它是相同的源画布/图像。EaselJS StageGL(最新的下一个版本,有望很快发布)在WebGL中实现了这一点。

    查看GitHub中的SpriteSheetBuilder演示和文档,将内容绘制到SpriteSheet/Sprite,而不是位图。

    干杯