LINUX.ORG.RU

Qt 60 FPS, плавность и прочее красивости.


0

2

Рисую с помощью QPainter. С конструкторе виджета есть такой код

 QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(16);

Это правильное решение? П.С. под 60 ФПС я имел в виду родную для монитора частоту.


Ответ на: комментарий от yakunprufovnebudet

А даже не знаю.. У меня DE всинк не поддерживает. Но если это не трудно то хотелось что бы был.

knotri
() автор топика

будет приближенно 60 фпс, да. а что смущает?

если по таймеру апдейтишь, то норм. если есть безконечный цикл перерисовки, то max fps ограничивается sleep'ом на разницу между 1/max_fps и времененем прошлого фрейма.

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

Да полностью все. Рисование весьма простое. Например 10 шариков, и 10 букв. (С поддержкой сглаживания)

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

Он ортогонален QPainter'у. По сути это таймер для анимации который умеет интерполировать значение изменяемого параметра. То есть по сути для плавности анимации не так важно когда произошло обновление. Важно насколько должна измениться картинка именно в этот момент. В общем почитай.

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

Не вижу смысла вызывать update по времени. Можел лучше вызывать update в момент, когда приложение готово отобразить что-то новое? Изменилось что-то, что должно повлиять на гуй, вызвали update().

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

update в момент, когда приложение готово отобразить что-то новое

Хм... а это идея, нужно будет попробовать.

Насколько я помню много update будут собираться в один если их часто( более 60 ФПС) вызывать?

knotri
() автор топика
Ответ на: комментарий от x0r

не думаю, что vsync возможен на софтварной рисовалке. нужны костыли.

эти костыли называются софтварной эмуляцией vsync'а, и делаются с помощью таймера

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

Не вижу смысла вызывать update по времени. Можел лучше вызывать update в момент, когда приложение готово отобразить что-то новое?

а можно совместить: менеджер композиций всё равно не заберёт твой буфер быстрее, чем за период отрисовки, потому слишком частые апдейты стоит игнорировать

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

потому слишком частые апдейты стоит игнорировать

Не понял почему, если перед этим ты написал что менеджер композиции всё равно не заберёт?

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

менеджер композиции всё равно не заберёт?

именно потому. ресурсы на рендеринг ты потратишь, а эффекта не будет никакого

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