![]() |
|
|
![]()
|
|
| babutta |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 18.12.2006 Репутация: нет Всего: нет |
Всем привет.
Использую: Проц интел два ядра 2.33 ГГц, ОЗУ 2 гига, видеокарта GeForce 8400 GS (дрова свежие), WindowsXP SP3, Qt 4.5.1, MS 2005. Вывожу просто растр, который постоянно меняется (типа очередь - добавлятся новая строка, все изображение сдвигается, старая строка уходит из поля видимости), период отрисовки 20мс. Никакого 3D, только 2D. вобще с OpenGL работаю только неделю =) Ситуация такая, когда я создаю один объект наследник QGLWidget, который отрисовывает один мой динамический растр размером 1024х768, время отрисовки несколько милисекунд, проц съедается на 1-3%%. Когда одновременно запускаю 4 приложения ситауция аналогичная - проц почти не занимается - 1-4%%. Когда я в одном приложении создаю больше одного объекта для отрисовки растра, то потребляемые ресурсы резко возрастают. Например, я создаю 4 таких объекта, каждый из которых отображает растр размером 400х400, и проц сразу съедается по-моему более 50%, время отрисовки тоже очень сильно выростает....
Интересно, что отрисовка техже динамически изменяющихся четырех растров в одном объекте наследнике QGLWidget в разных позициях, занимает проца до 4-х %%! т.е. так же ничего не жрет как и отображение одного растра. скриншот: ![]() P.S. Использую OpenGL так как QPainter на пару с QPixmap в данном случае очень медленно работали. Вопрос: Почему если в одном приложении одновременно отображается больше одного QGLWidget'a, то потребляемые ресурсы не пропорционально возрастают? Это сообщение отредактировал(а) babutta - 5.8.2009, 11:49 |
||||||
|
|||||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
А пробовал использовать QPainter от QGLWidget?
|
|||
|
||||
| babutta |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 18.12.2006 Репутация: нет Всего: нет |
не понял... как это "от"? я пробовал на простом QWidget переопределять paintEvent - по скорости не прошел. и переопределять paintEvent в QGLWidget рисуя с помощью QPainter я тоже пробовал, получается чуть хуже по скорости отрисовки, чуть больше проца съедается и плюс к этому еще загружаю видеопамять. В случае с QWidget в видеопамять ничего не отправлялось, смотрел утилитой. Это сообщение отредактировал(а) babutta - 5.8.2009, 16:46 |
|||
|
||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
Капец. glDrawPixels - ОЧЕНЬ медленная функция. Нужно от нее избавлятся. Так как происходит передача из RAM в GPU. И так каждый кадр. Не удивительно что все тормозит.
Это сообщение отредактировал(а) just_geek - 6.8.2009, 11:12 |
|||
|
||||
| babutta |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 18.12.2006 Репутация: нет Всего: нет |
дело в том, что ее скорость меня в общем-то устраивает, когда отрисовка происходит в единственном QGLWidget'e в приложении... но вот когда появляются еще GL-виджеты, то тут и начинаются настоящие тормоза... а вообще было бы очень интересно узнать по поводу альтернативы glDrawPixels и как я понял это использование текстур? p.s. неделю и один день знаком с OpenGL =) подскажи плз куда копать или ссылки дай, будь добр =) |
|||
|
||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
Ну для начала вынеси:
в initializeGL не зачем менять лишний раз стейты А вообще для каких то конкретных советов хотелось бы увидеть описание задачи, а то со скриншоты не совсем понятно что надо |
|||
|
||||
| babutta |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 18.12.2006 Репутация: нет Всего: нет |
Задача следующая:
Например есть 2 видеопотока. Отличие следующего кадра от предыдущего заключается в периодическом добавлении строк. С кадрами потоков надо производить математические операции (напрмер, отрисовать второй поток поверх первого с определенной степенью прозрачности) и выводить результирующий поток на экран. частота обновления кадров 50Гц, размер кадра 1024х768... интересуют подходы к решению такого рода задач. на примере предыдущего скриншота: линии каждого цвета (синие, красные, зеленые) подаются в отдельных видеопотоках. Это сообщение отредактировал(а) babutta - 6.8.2009, 15:17 |
|||
|
||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
Такую задачу не решал
Может это будет полезно? Проигрывание AVI файла в OpenGL Основной интерес представляют след. абазцы:
|
|||
|
||||
| babutta |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 18.12.2006 Репутация: нет Всего: нет |
just_geek, благодарю за помощь, почитаю =)
Это сообщение отредактировал(а) babutta - 7.8.2009, 12:45 |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |