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