Мы создаем приложение САПР, которое работает в браузере.
- C.A.D означает Автоматизированный дизайн.
- Иллюстраторы, CorelDraw, AutoCAD и т.д. являются примерами приложений САПР.
Он основан на Paper.js, очень аккуратной библиотеке Canvas, которая позволяет вам программно манипулировать векторами.
Проблема
Основная проблема, с которой я сейчас сталкиваюсь, - это производительность цикла перерисовки.
Алгоритм перерисовки "глупый" (с точки зрения умных взломов для повышения производительности) и, следовательно, неэффективен и медленный. Рендеринг элементов сцены сцены зависит от постепенно более медленного цикла перерисовывания.
Как накапливаются точки для рисования, каждый цикл перерисовывания становится медленнее и медленнее.
Схема перерисовки так же проста, как и она:
- очистить всю область.
- взять все элементы из графика сцены
- перерисовать все элементы.
Вопрос
Есть ли в классе примеры оптимизации рендеринга в таких случаях - если я хочу прекратить реализацию алгоритма с грязными прямоугольниками (рисование только измененных областей)
Изменить: Я экспериментировал с ручной растеризацией на месте, которая работает очень хорошо, я разместил ответ ниже.