Можно ли увеличить интервал обновления QPropertyAnimation для сверхгладкой анимации? - PullRequest
4 голосов
/ 29 июля 2010

Новый Animation Framework в Qt 4.6+ основан на QTimeLine, которая имеет открытую функцию void setUpdateInterval (int interval). Также на основе QTimeLine QGraphicsItemAnimation может получить доступ к этой функции, но новые классы инфраструктуры анимации (например, QPropertyAnimation) не могут! Не заблокирована ли анимационная структура с частотой около 60 обновлений в секунду, что соответствует попиксельному переходу 60 пикселей на экране только в секунду (для свойства положения анимации QPropertyAnimation) или есть способ увеличить его, не переопределяя все?

Ответы [ 2 ]

0 голосов
/ 24 июня 2012

Вот мое решение для Qt 4.8:

// You need qt source code to access QUnifiedTimer for QAnimationDriver
// Alternatively, copy'n'paste only the declaration for QUnifiedTimer class.
#include <qt/src/corelib/animation/qabstractanimation_p.h>

...

// In the animation thread, set the update timing interval.
// The smaller the interval, the more updates and more CPU consumption.
int animationTimingInterval = update_interval_in_msecs_u_want;
QUnifiedTimer::instance()->setTimingInterval(animationTimingInterval);
0 голосов
/ 03 февраля 2012

Я думаю, что существуют некоторые аппаратные ограничения, а также некоторые ограничения в отношении того, как OS / Qt обрабатывает некоторые элементы рисования. Основной цикл Qt тоже имеет к этому отношение.

По моему опыту, двойная буферизация и перекрашивание только областей, которые нужно перекрасить, даст вам более плавную анимацию, которую вы ищете. Также убедитесь, что ваша графика близка к размеру, который вы на самом деле рисуете. Увеличение интервала обновления не поможет большинству мониторов, поскольку они не обновляются быстрее, чем 60 Гц.

Вот ссылка , которая может быть полезна.

Qt усердно работает над тем, чтобы оптимизировать и заставить графику хорошо выглядеть на многих платформах, и я знаю, что, когда они готовятся к Qt 5, в работу растрового движка внесены некоторые изменения.

Я также видел демонстрацию, похожую на то, что обсуждается здесь лично, где они показывали кадры обновлений в секунду, которые они могли получить, рисуя плитки в игре. Вот ссылка на видео , где это обсуждается. Это касается настройки производительности Qt для конкретной реализации игры, а также того, что помогает, а что нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...