Я работаю над игрой, в которой используется 2D-контекст холста HTML5 на устройстве Chromecast (которое не имеет аппаратного ускорения). Я заметил, что рисование двух объектов в одном кадре вызовет перерисовку всей области, содержащей оба объекта. В качестве «худшего случая» представьте, что я хочу изменить цвет только верхнего левого и нижнего правого пикселей большого элемента холста. Если я использую для этого два однопиксельных вызова fillRect, он (по крайней мере, WebKit/Blink) пометит весь холст как грязный, что приведет к очень дорогостоящей операции рисования. Я считаю, что это должно быть связано с кодом, который выполняет эту логику в Chromium:
Есть ли способ убедить браузер выполнять две маленькие операции рисования вместо одной (чрезмерно) большой? Или это всегда будет медленнее, несмотря на то, что он перерисовывает значительно меньше? Я попытался разместить элементы на разных элементах холста, наложенных друг на друга, но браузер, кажется, все еще улавливает их и объединяет их вместе (по крайней мере, как показано областями перерисовки в DevTools).