В Qt 6.12 появился Canvas2D для GPU-отрисовки из QML и JavaScript
Canvas2D позволяет разработчикам рисовать интерфейсы и 2D-визуализации из QML и JavaScript на GPU. Новый элемент доступен в Qt 6.12 как экспериментальная версия.

В Qt 6.12 Canvas2D появился как экспериментальная версия. Это QML-элемент для разработчиков интерфейсов и 2D-визуализаций, который позволяет рисовать с помощью JavaScript. Элемент использует Qt Canvas Painter и рисует через QRhi прямо на GPU, тогда как Qt Quick Canvas задействует QPainter на CPU, а затем загружает результат в текстуру.
API основан на знакомой веб-разработчикам модели HTML Canvas. Существующий код Qt Quick Canvas во многих случаях можно перенести, подключив модуль QtCanvas2D и заменив Canvas на Canvas2D. Преимущество Canvas2D должно быть особенно заметно для анимированных графиков, волн, индикаторов и других больших холстов.
Совместимость пока неполная: среди отсутствующих возможностей есть пунктирные линии, фильтры, операции с пикселями и обрезка по произвольному контуру. Зато доступны кэширование путей на стороне GPU, регулируемое сглаживание, тени, сеточные узоры и дополнительные цветовые эффекты.
В тесте автора публикации одинаковый JavaScript-код при 16-кратной отрисовке набрал 4 FPS на Qt Quick Canvas и 165 FPS на Canvas2D. Результат получен на одном ноутбуке, поэтому Qt предлагает проверить производительность на целевом оборудовании с помощью примера Canvas 2D Tester.
Разработчикам пока стоит учитывать риск изменений: Qt не гарантирует совместимость исходного и бинарного кода Canvas2D. При этом C++ API Qt Canvas Painter в Qt 6.12 уже вышел из статуса экспериментальной версии.













