Всем доброго времени.
Мне нужно полностью отрисовывать некий измеритель (спидометр и прочее) который будет иметь сложную анимацию и кучу градиентов.
Использовать фоновые картинки врятли получится, поэтому все нужно рисовать самому.
Заметил странную тенденцию падения FPS при анимациях..
Например, имею последовательную анимацию изменения некоторого значения от минимума до максимума и обратно.
При изменени этого значения отрисовывается прогресс - дуга окружности с градиентом: что-то вроде поворота на заданный угол
в зависимости от текущего значения параметра. Измеритель имеет несколько дуг окружностей с разнами радиусами.
Обработчик onPaint() прибинжен на проперти текущего значения: при изменении текущего значения вся сцена будет перерисована.
Так вот, если перерисовывать все прогрессы в onPaint() - то FPS низкая: ~13-14 FPS, и onPaint() вызывается где-то раз в 60-70 мсек..
Но если оставить отрисовку только одного прогресса - то она повышается до ~30-40 FPS и onPaint() вызывается где-то раз в 30 мсек..
Все эти замеры делаю в QML профилировщике.. При этом, там видно что каждый onPaint() (со всеми рисовалками и прочим кодом)
занимает около 3,5 мсек времени..
Отсюда вопрос: какого хрена onPaint() вызывается реже? С какого перепугу?
Ведь фактически максимальная FPS может достигать 200 FPS (при задержке каждого onPaint() даже в 5 мсек..)
Такая ситуевина меня вообще не радует.. Елки..
Проект приаттачиваю
PS: Там надо кликнуть по счене мышкой для запуска анимации..
PSPS: Используется Qt 5.4.0 / Windowsx32 / MinGW
PSPSPS: Блин, вопрос: что будет если рисовать из C++ кода... Будет ли профит?