Попиксельное заполнение буфера |
Здравствуйте, гость ( Вход | Регистрация )
Попиксельное заполнение буфера |
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 |
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, |
|
|
Текстовая версия | Сейчас: 23.11.2024, 11:54 |