crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Попиксельное заполнение буфера
loh
  опции профиля:
сообщение 21.12.2011, 16:37
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!

Задача такая, у меня есть датчик, типа линейного сканера, от него приходят данные представляющие собой двух байтные числа которые после некоторой математической обработки связанной с операциями сложения умножения деления вычитается превращаются либо в цвет точки. соответственно один пакет этих чисел это одна колонка пикселей на экране. Каждая новая колонка приходит на место старой, а вся картинка смещается на один пиксел в сторону. Проблема в том что частота прихода этих пакетов высокая - например 200 пакетов в секунду,

Так вот! как организовать буфер для сохранения исходных значений с датчика, буфер с обработанными значениями для вывода на экран, как синхронизировать вывод с приёмом, что бы картинка смешалась плавно, без рывков? И как сделать быструю обработку исходных значений для преобразования их в цвет уже в офлайн режиме, когда данные берутся не с датчика, а с буфера исходных данных? :о
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
BlueIceScream
  опции профиля:
сообщение 25.12.2011, 1:52
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 56
Регистрация: 21.11.2011
Из: Республика Дагестан
Пользователь №: 3016

Спасибо сказали: 18 раз(а)




Репутация:   3  


QImage предоставляет аппаратно-независимый подход к изображению. Особенно сильно это будет проявляться когда графическая система будет отличаться от привычных. Например через QImage можно работать с directFB.

QPainter используется для рисования. Он должен на чем-то рисовать. Другой возможности рисовать не существует. Обязательно QPainter требует QPaintDevice.

Вот устройства для рисования:
QCustomRasterPaintDevice, QGLFramebufferObject, QGLPixelBuffer, QImage, QPicture, QPixmap, QPrinter, QSvgGenerator, QWidget.

Выбирай и рисуй. Или создавай свой потомок QPaintDevice и определяй собственный QPaintEngine.

Если так важна производительность и не важна аппаратная зависимость, то QGLPixelBuffer лучший выбор. Он использует полное аппаратное ускорение. Рисует в памяти. Затем можешь рендерить прямо в QImage.

Qt содержит пример использования QGLPixelBuffer - Pixel Buffers Example

Сообщение отредактировал BlueIceScream - 25.12.2011, 13:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
loh
  опции профиля:
сообщение 26.12.2011, 16:11
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 60
Регистрация: 11.5.2008
Пользователь №: 171

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(BlueIceScream @ 25.12.2011, 1:52) *
QImage предоставляет аппаратно-независимый подход к изображению. Особенно сильно это будет проявляться когда графическая система будет отличаться от привычных. Например через QImage можно работать с directFB.

QPainter используется для рисования. Он должен на чем-то рисовать. Другой возможности рисовать не существует. Обязательно QPainter требует QPaintDevice.

Вот устройства для рисования:
QCustomRasterPaintDevice, QGLFramebufferObject, QGLPixelBuffer, QImage, QPicture, QPixmap, QPrinter, QSvgGenerator, QWidget.

Выбирай и рисуй. Или создавай свой потомок QPaintDevice и определяй собственный QPaintEngine.

Если так важна производительность и не важна аппаратная зависимость, то QGLPixelBuffer лучший выбор. Он использует полное аппаратное ускорение. Рисует в памяти. Затем можешь рендерить прямо в QImage.

Qt содержит пример использования QGLPixelBuffer - Pixel Buffers Example

Что то я посмотрел этот pixel buffer и не понял как он поможет мне (

Я сейчас как делаю, в событии рисования просто рисую qimage, а в отдельном потоке просто заполняю попиксельно массив этой картинки, bits(), это быстрее чем встроенной функцией доступа к пикселям получается, но может быть можно как то qpainter соблазнить на рисование этого массива напрямую, тоесть не создавать qimage, а создать массив, выделить для него память и напрямую обрисовать в qpainter,
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- loh   Попиксельное заполнение буфера   21.12.2011, 16:37
- - ViGOur   Ну как я понимаю для это тебе нужно 3 потока и два...   24.12.2011, 10:32
- - loh   я так пробовал, там какая сложность была: чтобы вы...   24.12.2011, 12:34
- - ViGOur   Никаких циклов! Пришли данные для буфера №1, е...   24.12.2011, 13:22
- - loh   так я кажется пробовал тоже, и тогда это всё как-т...   24.12.2011, 17:12
- - ViGOur   А если у тебя поток данных вырастет ещё раз в 100,...   24.12.2011, 19:33
- - loh   ок, я так и делал, а мьютексы делать? а, да, и ещ...   24.12.2011, 21:13
- - ViGOur   Цитата(loh @ 24.12.2011, 22:13) ок, я так...   24.12.2011, 22:56
- - BlueIceScream   Для правильной реализации решения задачи производи...   24.12.2011, 23:04
- - loh   ну мне кажется qimage какое то лишнее звено которо...   24.12.2011, 23:42
- - BlueIceScream   QImage предоставляет аппаратно-независимый подход ...   25.12.2011, 1:52
|- - loh   Цитата(BlueIceScream @ 25.12.2011, 1:52) ...   26.12.2011, 16:11
|- - wiz29   Цитата(loh @ 26.12.2011, 17:11) Я сейчас ...   26.12.2011, 16:20
- - loh   блин как спросить то чтобы понятно было вот й qi...   26.12.2011, 22:03
- - BlueIceScream   Скорость работы функций QPainter напрямую зависит ...   26.12.2011, 22:31
- - loh   тоесть например QImage img; QGLPixelBuffer* pb = ...   26.12.2011, 23:30
- - BlueIceScream   Если вы используете QImage или QGLBuffer, то зачем...   27.12.2011, 0:38
- - loh   qpainter ом мне в опенгл разбираться долго чето н...   27.12.2011, 1:30
- - BlueIceScream   QPainter при выводе обязательно переводит QImage в...   27.12.2011, 2:33
- - loh   А можно qglwidget & qgraphicsscene объединить,...   27.12.2011, 6:48
- - wiz29   как я понял, тебе нужно выводить нечто в виде осци...   27.12.2011, 8:33
- - Sokoloff   Цитата(loh @ 21.12.2011, 17:37) Проблема ...   27.12.2011, 9:23
- - loh   У меня с тормозами даже кадров 5-6 в секунду было,...   27.12.2011, 10:24
|- - wiz29   Цитата(loh @ 27.12.2011, 11:24) Типа осци...   27.12.2011, 10:39
- - loh   Вооо класс! Я знал что должна быть какая то шт...   27.12.2011, 13:35
|- - wiz29   Цитата(loh @ 27.12.2011, 14:35) а как поп...   27.12.2011, 13:59
- - loh   А не знаешь, аппаратный скрол только в пиксмапе? В...   27.12.2011, 14:16
- - wiz29   qgraphicsitem может кешироваться подсистемой qgrap...   27.12.2011, 14:17
- - BlueIceScream   ЦитатаТипа осцилограммы нормально выводится, мне н...   27.12.2011, 18:19
|- - loh   Цитата(BlueIceScream @ 27.12.2011, 19:19)...   27.12.2011, 23:07
- - BlueIceScream   Такое использование буфера будет на мой взгляд быс...   28.12.2011, 1:21
- - loh   А как сделать зуммирование при рисовании картинки ...   28.12.2011, 14:14
- - BlueIceScream   Можете попробовать: void glPixelZoom( GLfloat x...   28.12.2011, 21:22
- - loh   Пока разбираюсь, полет нормальный, такой вопрос во...   29.12.2011, 10:47
- - BlueIceScream   Эта ветка по Qt. Если есть вопросы по работе функц...   29.12.2011, 16:09
|- - whatevillurks   Зачот получается вы даете не профессиональные сове...   29.12.2011, 16:13
- - BlueIceScream   Конечно же нет. Я не профессионал. Я вообще не про...   29.12.2011, 16:24
- - Abesh   У меня по теме есть вопрос: Проблема вот в чем, ес...   17.1.2012, 17:11


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


9 чел. читают эту тему (гостей: 9, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.11.2024, 11:54