Интересует несколько вопросов.
1. В цикле отрисовки все время происходит перерисовка всего холста или же только измененных его частей?
2. Поддерживается ли многослойность?
Перерисовка происходит для всей «сцены», так что многие применяют трюки для борьбы с падением производительности.
Многослойность поддерживается так: что сначала в коде — то и рисуется ниже, то есть порядок определяет z-индекс элементов.
Это трудно назвать многослойностью. Перерисовываться то все слои целиком тогда будут. Слои должны состоять из отдельных canvas элементов, наложенных друг на друга.
Я думаю что это не костыль, а пока единственное возможное решение многослойности. За счёт чего и достигается производительность.
Простой пример, статичный фон 800х600 и анимированный спрайт 50х50. Зачем нам ~16 раз в секунду перерисовывать весь холст 800х600 только из-за анимации маленького спрайта? Вот и падение производительности.
Я сварщик не настоящий и в низкоуровневых аспектах графики разбираюсь плохо. Но что-то мне подсказывает, что браузер при любом изменении всё равно перерисовывает канвас целиком.
Если слои будут очень разряженные и их будет много выйгрыш потеряется.
хотя это скорее редкая ситуация. Более чем достаточно использовать 8-16 слоев, чтобы реализовать ВСЕ. И так и нужно делать.
Знакомство с p5.js