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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: знатоки, как поступить?!  (Прочитано 9919 раз)
boolean
Гость
« : Октябрь 01, 2012, 13:52 »

всем привет. вообщем делаю прогу с вычислениями и отрисовкой в реальном времени, так что к ПО предъявляются повышенные требования к быстродействию и надежности, и еще нужна кроссплатформенность : линукс и win xp.
решил сделать интерфейс и визуализацию на qt (до этого только на билдере работал; 3D графика не нужна). теперь конкретнее:
1) какой компонент и методы использовать, чтобы получить максимальное быстродействие отрисовки и возможности аппаратного ускорения ( opengl)
2) как получить отрисовку без мерцания? (в билдере рисовал в промежуточный буфер и выводил хором все слои)
2) есть разные типы данных, которые обновляются через разные интервалы времени (от милисекунд до часов), но отображаться они должны постоянно и ПО СЛОЯМ. в билдере эту задачу решил использованием TBitmap. есть ли что-нибудь подобное здесь?
3) приложение многопоточное, и как обстоит в qt с рисованием из потока? тоже исключительно из главного?
4) приветствуются ссылки на статьи и примеры
повторюсь нужно максимум быстродействия
Записан
mutineer
Гость
« Ответ #1 : Октябрь 01, 2012, 14:05 »

1) QGLWidget
3) Есть QBitmap, наверно он подойдет (хз что ты делал с TBitmap)
4) да, тоже только из главного
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Октябрь 01, 2012, 14:09 »

А если не знаток то лучше не отвечать, что ли?  Улыбающийся

- TBitmap = QImage
- да, тоже только из главного

По поводу злободневного ускорения: буквально неск дней назад я себе сделал FBO и очень этим доволен, руки развязаны, ни от каких "компонентов" я не завишу
Записан
boolean
Гость
« Ответ #3 : Октябрь 02, 2012, 05:25 »

По поводу злободневного ускорения: буквально неск дней назад я себе сделал FBO и очень этим доволен, руки развязаны, ни от каких "компонентов" я не завишу

всем спасибо за ответы! а что такое FBO если объяснить"на пальцах" ?
и как с выводом текста в этом виджете? мне требуется выводить различную служебную информацию.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Октябрь 02, 2012, 10:09 »

а что такое FBO если объяснить"на пальцах" ?
OpenGL рендерит в буфер (offscreen), который читаете и комбинируете как хотите (по слоям или как)
Записан
boolean
Гость
« Ответ #5 : Октябрь 02, 2012, 10:18 »

аа, спасибо
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #6 : Октябрь 02, 2012, 10:37 »

К несчастью не все драйвера OpenGL поддерживают off-screen rendering.
Записан
boolean
Гость
« Ответ #7 : Октябрь 02, 2012, 13:18 »

К несчастью не все драйвера OpenGL поддерживают off-screen rendering.

и как это узнать?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Октябрь 02, 2012, 14:28 »

Проверить extension:  GL_ARB_framebuffer_object
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #9 : Октябрь 02, 2012, 14:34 »

К сведению, OpenGL не всегда ускоряет прорисовку. Хорошо ускоряется рисование деформированных картинок (масштабирование, поворот), заливка цветом. Плохо ускоряется вывод текста, рисование линий, кривых, точек в сравнении с software render.
Записан

Гугль в помощь
boolean
Гость
« Ответ #10 : Октябрь 03, 2012, 06:05 »

К сведению, OpenGL не всегда ускоряет прорисовку. Хорошо ускоряется рисование деформированных картинок (масштабирование, поворот), заливка цветом. Плохо ускоряется вывод текста, рисование линий, кривых, точек в сравнении с software render.

у меня просто матрица 5000 на 5000. из нее все просто пикселями рисуется, масштабируется и т.д. и другой слой - служебная информация. в этом случае подойдет?
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #11 : Октябрь 03, 2012, 06:45 »

Вопрос как раз в том, что рисуется из матрицы пикселами? И что за «и т.д.»?
Записан

Гугль в помощь
ssoft
Гость
« Ответ #12 : Октябрь 03, 2012, 06:51 »

К сведению, OpenGL не всегда ускоряет прорисовку. Хорошо ускоряется рисование деформированных картинок (масштабирование, поворот), заливка цветом. Плохо ускоряется вывод текста, рисование линий, кривых, точек в сравнении с software render.

Отлично все ускоряется. Мне пришлось написать свой движок, т.к. Qt и рассмотренные мной другие библиотеки не справляются ни в каком режиме работы.
Множество (тысячи) интерактивных часто изменяющихся динамических элементов, состоящие из невыпуклых полигонов, линий, точек и текста.

Пара секретов.
- желательно отрисовывать сцену как можно за меньшее количество раз (не останавливая конвейер GL).
- данные хранить на видеокарте.
- текст лучше отображать с использованием текстур (сначала рендеринг символов в текстуру, затем отображаем текст, используя текстурные символы).
- текстуры располагать формировать в виде атласа текстур (когда много мелких текстур, располагаются на одной большой).
- использовать шейдеры.
Записан
boolean
Гость
« Ответ #13 : Октябрь 03, 2012, 07:26 »

Вопрос как раз в том, что рисуется из матрицы пикселами? И что за «и т.д.»?
ну как в любом растровом изображении: матрица хранит информацию о распределении по цветам, яркости и тп. так и у меня, только данные берутся из показаний датчиков. ну соотв доп операции: масштаб, сдвиг

« Последнее редактирование: Октябрь 03, 2012, 07:30 от boolean » Записан
boolean
Гость
« Ответ #14 : Октябрь 03, 2012, 07:28 »

Отлично все ускоряется. Мне пришлось написать свой движок, т.к. Qt и рассмотренные мной другие библиотеки не справляются ни в каком режиме работы.
Множество (тысячи) интерактивных часто изменяющихся динамических элементов, состоящие из невыпуклых полигонов, линий, точек и текста.

Пара секретов.
- желательно отрисовывать сцену как можно за меньшее количество раз (не останавливая конвейер GL).
- данные хранить на видеокарте.
- текст лучше отображать с использованием текстур (сначала рендеринг символов в текстуру, затем отображаем текст, используя текстурные символы).
- текстуры располагать формировать в виде атласа текстур (когда много мелких текстур, располагаются на одной большой).
- использовать шейдеры.
случайно не программа УВД?
"Мне пришлось написать свой движок" - это как? обернул классами opengl?
за секреты большое спасибо
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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