我正在使用drawRect在HTML5画布上绘制大量矩形(约20000个),每个矩形都位于不同的预定位置。 我正在从循环中执行此操作:
for (var i = 0; i < 100; ++i) {
for (var j = 0; j < 200; ++j) {
context.fillStyle = '#000000';
context.fillRect(i * 8, j * 2, 6, 1);
}
}
这段代码在800像素宽的画布上绘制了100个条形图,每个条形图宽度为6像素,由许多小的(1x6)矩形堆叠而成:在提供的示例中有200个静态计数,但在我的应用程序中会动态改变数量(因此需要重新渲染)。
这个过程本身只需要几十毫秒,没有什么严重的问题。但是这个整个过程会被反复调用,这会显著影响性能,并且不是好的方式。
是否有解决方案或变通方法,可以使这样的条形图在一次画布指令中绘制,希望更好地利用硬件加速?
在我的应用程序中,每个矩形都会发光,因此水平切割它们不是一个好的方法。我已经尝试使用离屏画布,在那里绘制,并将其图像输出呈现到主画布上,但性能没有明显提高。