Russian Qt Forum
Сентябрь 21, 2024, 15:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Тормоза в polyline  (Прочитано 20980 раз)
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #15 : Январь 10, 2010, 00:15 »

Поэтому если Вы будете использовать тот же drawPolyline, но рисовать, напр. по 5 точек - я предполагаю скорость будет приемлемой. Но тут есть одно "но" - нужно аккуратно "разрезать на порционные куски". Если просто "рисовать по N точек", то картинка может "интерферировать" - в одних местах график будет выглядеть ярче, в др. бледнее. Нужно ставить места разрывов там где наклон достаточно мал.
Ну вообще-то у меня много задач и без отрисовки антиалиасных полилиний Улыбающийся. Пусть они сейчас рисуются через цикл drawLine, но ведь как красив был код с drawPolyline. Вдруг оно само как-нибудь оптимизируется.
« Последнее редактирование: Январь 10, 2010, 05:24 от Dendy » Записан
manarch
Гость
« Ответ #16 : Март 10, 2010, 12:03 »

Вот натолкнулся на тему. Только не понял в чем проблема использования OpenGL для ускорения отрисовки? Изменяем немного продставленный код:
Код:
    QGLWidget glw;

    QPainter painter(&glw);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.setPen(QColor(0x77EEFF));
    painter.drawPolyline(polygon);      // Собственно все тормоза в этих двух
    painter.setPen(Qt::magenta);
    painter.drawPolyline(polymax);      // вызовах drawPolyline

   *img = glw.grabFrameBuffer();       // копируем буфер изображения в QImage
и вуаля... скорость  отрисовки снизилась а fps повысилась.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #17 : Март 10, 2010, 12:09 »

А насколько важно сразу отрисовывать в QPixmap, а не в QImage?
QPixmap может быть очень тяжелым для такого множества линий, да и не только для них.
Попробуйте сначала рисовать в QImage.
Записан

Qt 5.11/4.8.7 (X11/Win)
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #18 : Март 10, 2010, 21:09 »

Никакой видимой разницы между быстродействием QPixmap и QImage в этом случае я не заметил.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #19 : Март 10, 2010, 21:11 »

Вот натолкнулся на тему. Только не понял в чем проблема использования OpenGL для ускорения отрисовки?
Все бы ничего, только у меня OpenGL framebuffer на компе не поддерживается
Записан
SABROG
Гость
« Ответ #20 : Март 10, 2010, 21:30 »

Картинка каждый раз перерисовывается полностью или её можно сдвигать и дорисовывать?
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #21 : Март 11, 2010, 20:32 »

Перерисовывается полностью
Записан
SABROG
Гость
« Ответ #22 : Март 12, 2010, 01:19 »

Чего-то у меня твоя программа вылетает с AV:

Код:
Program received signal SIGSEGV, Segmentation fault.
0x0040140f in renderImage (img=0x22fef8, ptr=0x22f6f4, ptm=0x22eef4,
    len=2147483647) at main.cpp:16
16              else ptm[i] -= (ptm[i] - ptr[i]) / 25;
(gdb) p i
$1 = 2182
(gdb) p &ptm[i]
$3 = (quint16 *) 0x230000

Стек что ли переполняется?
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #23 : Март 12, 2010, 18:52 »

Сейчас не готов комментировать - давно уже это было. За выходные посмотрю.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #24 : Март 13, 2010, 22:47 »

Даже не знаю, что и сказать. Все нормально работает. Только мееееедленно. Грустный
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #25 : Март 13, 2010, 23:09 »

Попробовал еще и это.
Только не понял в чем проблема использования OpenGL для ускорения отрисовки?
и вуаля... скорость  отрисовки снизилась а fps повысилась.
fps-то повысилась примерно в 6 раз. Но всего лишь до 4.7 по сравнению c 0.75. Т.е. все равно ни в какие ворота. Кроме того, и антиалиасинг куда-то пропал. Так что такого OpenGL мне не надо.
Записан
SABROG
Гость
« Ответ #26 : Март 14, 2010, 04:20 »

Даже не знаю, что и сказать. Все нормально работает. Только мееееедленно. Грустный
Какой компилятор? Я на MinGW собирал.
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #27 : Март 14, 2010, 10:21 »

WinXP MinGW Qt 4.6.0
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #28 : Март 18, 2010, 10:31 »

Цитировать
Никакой видимой разницы между быстродействием QPixmap и QImage в этом случае я не заметил.
А я заметил!

Ваш оригинальный код с QImage
5.219 secs (1.91608 fps)

c QPixmap
0.594 secs (16.835 fps)

Xorg/fglrx, Radeon HD4200, PhenomII X4 925
Записан

Qt 5.11/4.8.7 (X11/Win)
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #29 : Март 18, 2010, 20:02 »

А я заметил!
Безумно рад за Вас. Про то, что для X Windows разница имеется я наслышан (например, http://www.prog.org.ru/index.php?topic=9858.msg57015#msg57015). Повторюсь в третий раз у меня WinXP MinGW Qt 4.6.0. И проблема актуальна именно в этой конфигурации.
« Последнее редактирование: Март 18, 2010, 20:12 от xokc » Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 23.