LINUX.ORG.RU

C++, Qt, прокрутка QPixmap рывками.


0

3

Qt 4.8.2 linux, 4.8.3 win.

Подключил QPropertyAnimation к виджету. В виджет равномерно, где-то с частотой 60 fps сыплются события анимации, а виджет смещает позицию отображаемой картинки.

Получается вот такое: http://www.youtube.com/watch?v=KRk_LNd7EBg

На видео получилось зафиксировать этот эффект - где-то 2 раза в секунду происходят еле-заметные рывки прокручиваемого полотна вверх. Рывок выглядит как быстрая «волна» смещения, которая проскакивает снизу вверх. В начале видео ещё можно увидеть, как идущий вниз курсор идёт тоже рывками. А сама прокрутка лучше всего видна в районе середины, когда начинает ползти большое мясо. Это в линуксе. В винде это выглядит похожим образом (видеокарта та же самая - встроенная в проц Intel HD 3000).

Да, в иксах у меня есть тиринг (видно в броузере на ютубе, например), но на винде его точно нет, но эффект там виден тоже.

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

★☆

Последнее исправление: kiverattes (всего исправлений: 1)

Ты же понимаешь, что без исходников тебе можно только телепатически предложить использовать QMovie, например.

fluorite ★★★★★
()

Самый главный вопрос, выполняются ли периодически некие относительно тяжелые вычислительные задачи в главном потоке?

pathfinder ★★★★
()
Ответ на: комментарий от fluorite

QMovie переключает заготовленные кадры. Разве это относится к прокрутке одного большого кадра?

kiverattes ★☆
() автор топика

В виджет равномерно, где-то с частотой 60 fps сыплются события анимации, а виджет смещает позицию отображаемой картинки.

Нафига так часто?

Ты ьы замерил, какие задержки при фактическом получении событий виджетом.

AF ★★★
()
Ответ на: комментарий от AF

Я на сайте Qt прочитал про 60 fps. Это они там фреймрейт выбирают сами, не настраивается.

А чем лучше замерять? Посоветуй точный таймер из boost или из Qt?

kiverattes ★☆
() автор топика
Ответ на: комментарий от kiverattes

А чем лучше замерять? Посоветуй точный таймер из boost или из Qt?

QElapsedTimer должно хватить

AF ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.